java继承问题

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吗?

晕,怎么发到这来了,不好意思