У меня есть простой вопрос, на который я просто не могу найти хороший ответ. Почему в следующей программе Java отображается 20? Я бы предпочел подробный ответ, если возможно, пожалуйста.Статические методы и полиморфизм
class Something{
public int x;
public Something(){
x=aMethod();
}
public static int aMethod(){
return 20;
}
}
class SomethingElse extends Something{
public static int aMethod(){
return 40;
}
public static void main(String[] args){
SomethingElse m;
m=new SomethingElse();
System.out.println(m.x);
}
}
Полиморфизм работает только для методов, которые не являются 'final' или' private' или 'static'. – Pshemo
Кроме того, если вы хотите, чтобы 'aMethod()' в 'SomethingElse' переопределял' aMethod() 'в' Something', тогда вы должны указать атрибут '@ Override', хотя вам также придется удалить' static ' –