多态中继承调用的细节

来源:互联网 发布:win8 mac地址修改器 编辑:程序博客网 时间:2024/05/29 10:39

在自身学习中发现多态和继承结合出现的一些小问题,是从书本概念上很难理解到的,结合这道例题特别在代码中注释记录下最初的疑问和解决思路

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();    }}

输出结果
这里写图片描述