class A{
public void show(){
show2();
}
public void show2(){
System.out.println("我");
}
}
class B extends A {
/*
public void show(){
show2();
}
*/
public void show2(){
System.out.println("爱");
}
}
class C extends B{
public void show(){
super.show();
}
public void show2(){
System.out.println("你");
}
}
public class DuoTaiTest4{
public static void main(String[]args){
A a=new B();
a.show(); B b=new C();
b.show();
}
}
总结:
多态的成员访问特点:
方法:编译看左边,运行看右边。
继承的时候:
子类中有和父类中一样的方法,叫重写。
子类中没有父类中出现过的方法,方法就被继承过来了。
a.show( );
编译时看左边,a中有show()方法,编译时不会出错,运行时要运行B中的show方法。
(B中虽然没有写出show方法,但其实已经把A中的show继承过来了!)
b.show();
运行看右边:
public void show(){
super.show();
}
而super调用的是父类B中的show方法,B中show中又调用show2(),虽然B中也有show2(),但不要忘记,我们实际上创建的是 C 的对象,(new C( );),最后运行要看右边,不要忘记了。
public void show(){
show2();
}
以上。