class A {
public void getMessage() {
showMessage();
}
private void showMessage() {
System.out.println("A");
}
}
public class B extends A {
private void showMessage() {
System.out.println("B");
}
public static void main(String[] args) {
A a = new B();
B b = new B();
a.getMessage();
b.getMessage();
}
}
为什么输出都是A
问题补充
这个我知道
B b = new B();
b.getMessage();
为什么调用的是父类的私有方法
A a = new B();
a.getMessage();
为什么调用的是父类的私有方法
java继承问题
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
7条回答
Novato_IT 2009-03-07 22:19关注[quote]继承思想中的向上转型,参考Thinking in java...[/quote]
[code="java"]public class PrivateOverride {private void f(){
System.out.println ("private f()");
}
public static void main (String[] args) {
//把main方法看成特许的类方法,可以直接调用私有方法
PrivateOverride hh=new PrivateOverride();
hh.f(); //private f()
//向上转型,先构造基类原子,正好可以在main方法中调用,如果将PrivateOverride方法访问权限改为public就可以实现多态啦
PrivateOverride jj=new Derived();
jj.f(); //private f()
}
}class Derived extends PrivateOverride{
public void f(){
System.out.println ("public f()");
}
}[/code]本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报