Mam pytanie o kod tutajPolimorfizm i Metody statyczne
public Car {
public static void m1(){
System.out.println("a");
}
public void m2(){
System.out.println("b");
}
}
class Mini extends Car {
public static void m1() {
System.out.println("c");
}
public void m2(){
System.out.println("d");
}
public static void main(String args[]) {
Car c = new Mini();
c.m1();
c.m2();
}
}
wiem, że polimorfizm nie działa z metod statycznych, tylko do metody instancji. A także to przesłonięcie nie działa dla metod statycznych.
Dlatego myślę, że ten program powinien wypisać: c, d
Ponieważ c wywołuje metodę M1, ale jest statyczne, więc nie może zastąpić i to wywołuje metodę w klasie Mini zamiast samochodów.
Czy to prawda?
Jednak mój podręcznik mówi, że odpowiedź powinna być: a, d
jest literówka? Ponieważ jestem teraz nieco zdezorientowany.
Proszę to wyjaśnić, dziękuję.
+1 Dla * Dlatego nigdy nie powinieneś wywoływać metod statycznych przez takie instancje. * – Joffrey