java中关于多态的案例

判断下列代码的输出结果:

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类中进行调用,输出为:你

posted @ 2024-09-25 11:33  你的镁偷走了我的锌  阅读(11)  评论(0)    收藏  举报