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();
为什么调用的是父类的私有方法
[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]
private 不被继承!
顶了。。我也不太懂。。
在B里面showMessage是私有的,所以b.getMessage(); 调用的是
public void getMessage() {
showMessage();
}
[code="java"]public void getMessage() {
showMessage();
} [/code]
大家现在上得了code.google.com吗?
晕,怎么发到这来了,不好意思