关于Java特性多态的理解

本文通过一个Java代码示例详细解释了多态的概念。A类为父类,B类继承A并重写show方法。在不同的对象调用show方法时,展示了Java的多态性特点。调用者与实际参数类型的不同导致了方法调用的差异,从而揭示了对象多态使用的原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Java三大新特性之一--多态,老大难,估计工作十来年的小伙伴对于多态也有很多玩不明白,笔者也一直蒙圈中,今天找了一个小demo,想对多态有个深入的了解,demo介绍:A类是父类,B类继承A类,重写show(A obj)方法,通过下面各种多态的调用,方便理解对象的多态使用。

static class A {
    public String show(D obj) {
        return ("A and D");
    }
    public String show(A obj) {
        return ("A and A");
    }
    public A(){
        System.out.println("对象A构造...");
    }
}
static class B extends A {
    public B(){
        System.out.println("对象B构造...");
    }
    public String show(B obj) {
        return ("B and B");
    }
    public String show(A obj) {
        return ("B and A");
    }
}
static class C extends B {
}
static class D extends B {
}

public static void main(String[] args) {
    A a1 = new A();
    System.out.println("初始化1完成");
    A a2 = new B();
    System.out.println("初始化2完成");
    B b = new B();
    System.out.println("初始化3完成");
    C c = new C();
    System.out.println("初始化4完成");
    D d = new D();
    System.out.println("初始化5完成");


    System.out.println("1--" + a1.show(b)); // 1--A and A
    System.out.println("2--" + a1.show(c)); // 2--A and A
    System.out.println("3--" + a1.show(d)); // 3--A and D
    System.out.println("4--" + a2.show(b)); // 4--B and A
    System.out.println("5--" + a2.show(c)); // 5--B and A
    System.out.println("6--" + a2.show(d)); // 6--A and D
    System.out.println("7--" + b.show(b));  // 7--B and B
    System.out.println("8--" + b.show(c));  // 8--B and B
    System.out.println("9--" + b.show(d));  // 9--A and D
}

通过以上打印结果,总结了一句话:

引用调用方法 优先调用父类的方法  如果父类没有找到 找重载的方法 如果子类重写这个方法了 就调用子类的这个方法 如果父类找不到 也调用子类的重写方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

努力终会有回报

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

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

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

打赏作者

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

抵扣说明:

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

余额充值