С помощью этого кода:Почему частный метод вызывается в суперконтексте?
public abstract class A {
private String runNow() {
return "High";
}
public abstract String cos();
static class B extends A {
public String runNow() {
return "Low";
}
public String cos() {
return "cos from B";
}
}
public static void main(String args[]) {
A[] a = new B[] {new B(), new C()};
for (A aa : a) {
System.out.println(aa.runNow() + " " + aa.cos());
}
}
}
class C extends A.B {
public String runNow() {
return "Out";
}
public String cos() {
return "cos from C";
}
}
Почему runNow
метод из класса A
испробованы и не из подклассов?
Возможный дубликат [Переопределение личных методов в Java] (http://stackoverflow.com/questions/2000137/overriding-private-methods-in-java) – Tom
Прочтите дублированный вопрос о том, почему вы не можете переопределить частный методы. И в следующий раз: аннотируйте свои методы с помощью '@ Override', чтобы компилятор мог проверить, не перепутали ли вы метод или нет. – Tom
, пожалуйста, не редактируйте свой вопрос, чтобы ввести синтаксические ошибки. Вы не можете назвать свой 'A []' массив 'aa'. – Tom