Java中的多态性


💖The Begin💖点点关注,收藏不迷路💖

多态性(Polymorphism)是面向对象编程的三大基本特性之一,它允许我们以统一的方式处理不同的对象。多态性主要体现在方法的重写(Override)和方法的重载(Overload)上,但真正的多态性通常指的是方法的重写,并在运行时根据对象的实际类型来确定调用哪个方法。

1、方法重载(Overload)与多态性

方法重载允许在同一个类中定义多个同名但参数列表不同的方法。 然而,方法重载在编译时就已经确定了要调用的方法,因此它并不属于多态性的范畴。

class Example {  
    void method(int a) {  
        System.out.println("带有整数参数的方法。");  
    }  
  
    void method(double a) {  
        System.out.println("带有双精度参数的方法。");  
    }  
}

2、方法重写(Override)与多态性

方法重写是子类对父类已有方法的实现进行覆盖。 当子类对象调用该方法时,将执行子类中的方法,而不是父类中的方法。这就是多态性的体现因为它允许我们使用父类类型的引用变量来引用子类对象,并调用子类中的方法。

满足多态性的三个条件:

1、有继承: 子类必须继承自父类。
2、有重写: 子类必须重写父类中的某个方法。
3、父类引用指向子类对象: 通过父类类型的引用变量来引用子类对象。

示例代码:

class Animal {
    void makeSound() {
        System.out.println("动物发出声音");
    }
}

class Dog extends Animal {
    @Override
    void makeSound() {
        System.out.println("狗在叫");
    }
}

class Cat extends Animal {
    @Override
    void makeSound() {
        System.out.println("猫在喵喵叫");
    }
}

public class PolymorphismDemo {
    public static void main(String[] args) {
        Animal myDog = new Dog(); // 父类引用指向子类对象
        myDog.makeSound(); // 输出 "狗在叫",展示了多态性

        Animal myCat = new Cat(); // 另一个父类引用指向另一个子类对象
        myCat.makeSound(); // 输出 "猫在喵喵叫",再次展示了多态性
    }
}

在上面的示例中,我们有一个Animal类,以及两个继承自Animal的子类Dog和Cat。

Dog和Cat都重写了Animal中的makeSound()方法。在main方法中,我们创建了两个Animal类型的引用变量myDog和myCat,但实际上它们分别指向了一个Dog对象和一个Cat对象。

当我们调用myDog.makeSound()和myCat.makeSound()时,由于多态性,它们会分别调用Dog类和Cat类中的makeSound()方法,而不是Animal类中的方法。这就是Java中多态性的体现

在这里插入图片描述


💖The End💖点点关注,收藏不迷路💖
  • 18
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 23
    评论
评论 23
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Seal^_^

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

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

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

打赏作者

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

抵扣说明:

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

余额充值