多态的问题
class B
{
static void run(){
System.out.println( "B ");
}
}
class D extends C
{
static void run(){
System.out.println( "D ");
}
}
class C extends B
{ static void run(){
System.out.println( "c ");
}
public static void main(String[] args)
{
B b1 = new B();
b1.run();
B b2 = new C();
b2.run();
B b3 = new D();
b3.run();
C c1 = new C();
c1.run();
C c2 = new D();
c2.run();
}
}
大家事先预测一下打印结果,再谈谈为什么会导致这样的原因!!!!
------解决方案--------------------B
C
D
C
D
------解决方案--------------------B
B
B
c
c
静态成员函数不能重写
------解决方案--------------------还是不太懂,期待更详细答案
------解决方案--------------------b b b c c
静态方法不能被覆盖,在编译时就已经决定了该调用哪个方法了。
并且静态方法建议、推荐用类名调用,因为它是属于类的,而不是属于对象的。
------解决方案--------------------静态成员函数不能重写
------解决方案--------------------static的方法...静态绑定
绑定在其声明类型上,而不是实际类型