0
点赞
收藏
分享

微信扫一扫

java继承与多态——小测试

十日十月Freddie 2022-04-17 阅读 47
java
package test1;

 class A {
    public String s = "123";

    public void show(A obj){
        System.out.println("A and A");
    }

    public void show(D obj){
        System.out.println("A and D");
    }
}

class B extends A{
    public String s = "456";
    public void show(B obj){
        System.out.println("B and B");
    }
    public void show(A obj){
        System.out.println("B and A");
    }
    public void show(E obj){
        System.out.println("B and E");
    }
}

class C extends B{
}

class D extends B{
}

class E{
}
public class F002 {
    public static void main(String[] args){
        A a1 = new A();
        A a2 = new B();

        B b = new B();
        C c = new C();
        D d = new D();
        E e = new E();

        a1.show(b);
        a1.show(c);
        a1.show(d);
        System.out.println(a1.s);

        a2.show(b);
        a2.show(c);
        a2.show(d);
        //a2.show(e);//这句编译不过
        System.out.println(a2.s);

        b.show(b);
        b.show(c);
        b.show(d);
        b.show(e);
        System.out.println(b.s);
    }
}

输出有三段:

第一段涉及到向上转型,不太难

第二段涉及到的内容是:

将一个子类的对象赋值给父类的变量,执行程序时是按照父类的逻辑去寻找该执行哪个方法,等找到了那个方法之后,却是按照着子类的实现方式来执行

第三段涉及到的内容是:

动态绑定方面的知识,一个对象在调用一个方法时,jvm会依次在其父类、其父类的父类、一直到object类,一旦找到符合的方法,就去执行它。

举报

相关推荐

0 条评论