判断下列代码的输出结果:
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(); // show2();
}
public void show2() {
System.out.println("你");
}
}
public class Test05 {
public static void main(String[] args) {
A a = new B();
a.show(); // 爱
B b = new C();
b.show(); // 你
}
}
当第一个a.show()进行编译的时候,满足编译看左运行看右,A类中有该方法,不报错,运行看右,回到B类中去调用show()方法,输出结果为:爱
当第二个b.show()进行编译的时候,满足编译看左运行看右,B类中有该方法,不报错,运行看右,回到C类中去调用show()方法,在该show()方法里有super.show(),会调用父类的show(),该方法里面有show2(),在C类中进行调用,输出为:你