Код: Выделить всё
class Main {
public static void main(String[] args) {
Main m = new Sub();
m.sing();
System.out.println(m.foo()+"");
}
public void sing(){
System.out.println("hohoho");
}
private boolean foo(){
return false;
}
}
class Sub extends Main{
public boolean foo(){
return true;
}
public void sing(){
System.out.println("lalala");
}
}
Но результат:
Код: Выделить всё
lalala
false
При вызове Sing() имеет смысл запускать реализацию Sub, поскольку она неявно переопределяет функцию Single() Main. Я также понимаю, что методы foo() в обоих классах являются автономными, и Sub не наследует и не переопределяет foo().
Мой вопрос здесь: при вызове метода foo, что мешает запуску Java Подкласс foo() ? (это основано на моем предположении, что именно тип объекта определяет метод запуска, а не ссылочный тип, но наблюдения показывают обратное)
Мое предположение в корне неверно?
Подробнее здесь: https://stackoverflow.com/questions/792 ... method-get