class Parent
{
private void method1()
{
System.out.println("Parent's method1()");
}
public void method2()
{
System.out.println("Parent's method2()");
method1();
}
}
class Child extends Parent
{
public void method1()
{
System.out.println("Child's method1()");
}
}
class test {
public static void main(String args[])
{
Parent p = new Child();
p.method2();
}
}
Run Code Online (Sandbox Code Playgroud)
我很困惑为什么在Parent :: method2()中调用method1()时它会调用Parents方法1()而不是Childs方法1?我看到只有当method1()是私有的时才会发生这种情况?有人能解释一下为什么吗?
谢谢.
这是基于范围规则发生的; 在Parent最佳匹配中method1是类本地私有版本.
如果你定义method1为public或protected中Parent和覆盖的方法Child,然后调用method2将调用Child的method1替代.
| 归档时间: |
|
| 查看次数: |
173 次 |
| 最近记录: |