【发布时间】:2015-11-29 13:25:47
【问题描述】:
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 的调用不起作用?我的意思是,如果它是公共的(在 Base 中),那么派生类中的 sayHello 就会被调用。那么,我不能理解的是,如果它必须从派生类中调用公共的sayHello,那为什么还要从基类中查看访问修饰符呢?
另外,如果您能指出一些简明的资源来帮助我更深入地理解这一点,我将不胜感激。谢谢!
【问题讨论】:
-
当你在子类中提供一个覆盖父实现的实例方法时,这是被调用的方法,而不是父类。
标签: java oop inheritance jvm dynamic-binding