【发布时间】:2013-10-19 02:57:28
【问题描述】:
我对在继承中使用私有方法感到困惑,例如:
public class A {
private void say(int number){
System.out.print("A:"+number);
}
}
public class B extends A{
public void say(int number){
System.out.print("Over:"+number);
}
}
public class Tester {
public static void main(String[] args) {
A a=new B();
a.say(12);
}
}
根据上面的代码,我对私有方法的继承感到困惑,私有方法是从class A继承到B吗?还是两个类中的 say 方法完全不相关?由于代码在 main() 方法中运行时出现错误,似乎class B 无法从class A 调用私有方法。
【问题讨论】:
-
你不能覆盖私有方法。
-
受保护的方法被继承。私有方法不被继承。
A没有公共的say()方法,因此该程序不应编译。如果你用((B)a).say(12)强制它,那么它会。
标签: java inheritance private-methods