在自身学习中发现多态和继承结合出现的一些小问题,是从书本概念上很难理解到的,结合这道例题特别在代码中注释记录下最初的疑问和解决思路
package org.westos_02_多态;
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(){
System.out.println("hahaha");
super.show();
/*q:会输出爱 还是 我 还是 我爱?为什么没有输出预想中的结果?
a:调用了父类的show(),但是当父类的show调用show2时子类有show2方法,所以优先运行子类show2方法,show2已经被子类重写,所以先输出 你*/
System.out.println("lalala");//q:为什么晚于你输出
}
public void show2(){
System.out.println("你");
}
}
public class DuoTaiTest {
public static void main(String[] args){
A a = new B();
a.show();
B b = new C();
b.show();
}
}
输出结果