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();
}
}
关键看 b.show();
思路一:一开始B继承A,类B里面的show()方法是A里面的,然后方法重写C里面show()是super.show() ,按理讲运行的话这里的super代表的是A这个父类
思路二:一开始B继承A,类B里面show()方法是A里面的show2(); 运行的时候继承C里面的show(),super代表的是B这个父类,意思是运行B里面的show(),这个 show()是A继承来的
我发现2个答案都一样的,想问哪个思路是正确的?为什么?错的错在哪了? |
|