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类,一旦找到符合的方法,就去执行它。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

倚风听雨.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值