class Base {
private void SayHello(){ //PRIVATE
System.out.println("Hello from Base");
}
}
class Derived extends Base {
public void sayHello(){ //PUBLIC
System.out.println("Hello from Derived");
}
}
public class TestHello{
public static void main(String[] args) {
Derived d = new Derived();
Base b = d;
d.sayHello(); //works as expected
b.sayHello(); //Why does this not work?
}
}
Я хочу понять: это частное sayHello из базового класса, видимого для производного класса? или это переопределение? И почему вызов вызванного sayHello из базового указателя не работает? Я имею в виду, если бы он был общедоступным (в базе), тогда было бы вызвано sayHello из производного класса. Итак, я не могу понять, что если он должен вызывать public sayHello из производного класса, то зачем смотреть на модификатор доступа из базового класса?Как динамическая привязка работает для частных методов в базовом классе в Java?
Кроме того, если вы можете указать мне на какой-то краткий ресурс, который поможет мне разобраться в этом более подробно, я бы очень признателен этому. Благодаря!
Когда вы предоставляете метод экземпляра в подклассе, который переопределяет реализацию родителей, это метод, который вызывается, а не родители. –