У меня есть вопрос об этом коде прямо здесь.
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();
}
}
Я знаю, что полиморфизм не работает со статическими методами, а только с методами экземпляра. А также, что переопределение не работает для статических методов.
Поэтому я думаю, что эта программа должна распечатывать: c, d
Потому что c вызывает метод m1, но он статический, поэтому он не может переопределить и вызывает метод в классе Mini вместо Car.
Правильно ли это?
Однако мой учебник говорит, что ответ должен быть: a, d
Это опечатка? Потому что сейчас я немного запутался.
Пожалуйста, проясните это, спасибо.