Java新手指南:从菜鸟到编程大师的趣味之路-多态

这里是Themberfue

本章讲的是Java三大特性之一的多态,也是最后一个特性 

 多态概念

        既然我们要学习多态,首先得知道这玩意儿到底是个什么东西?

        通俗地说,多态其实就是多种形态。具体来说就是去完成某个行为,当不同的对象去完成时呈现出不同的状态。

多态的实现

        说完了多态的概念,那它如何实现和使用呢?

        在Java中实现多态,必须要满足以下条件,缺一不可。

1. 必须在继承体系下

2. 子类必须要对父类中方法进行重写

3. 通过父类的引用调用重写的方法

在Java的世界里,多态性是一场魔法秀,父类引用变身为子类对象,就像变魔术一样。当你用父类的引用调用一个重写的方法时,就像魔术师一挥手,舞台上的兔子变成了鸽子,实际调用的是子类的版本。这就是多态的神奇之处,编译时它假装是父类,但运行时却露出了子类的真面目。就像是在说:“嘿,我可能看起来像你爸爸,但我其实是你!”。 

PS:上面这是AI写的,确实有点幽默了。

空讲没感觉,我们通过代码来看看 

class Animal {
    String name;
    int age;
    public Animal(String name, int age){
        this.name = name;
        this.age = age;
    }
    public void eat(){
        System.out.println(name + "吃饭");
    }
}
class Cat extends Animal{
    public Cat(String name, int age){
        super(name, age);
    }
    @Override
    public void eat(){
        System.out.println(name+"吃鱼~~~");
    }
}
class Dog extends Animal {
    public Dog(String name, int age){
        super(name, age);
    }
    @Override
    public void eat(){
        System.out.println(name+"吃骨头~~~");
    }
}

        这段代码主要创建了三个类 ,分别是Animal类,Cat类以及Dog类,其中Cat类和Dog类都继承了Animal类,所以Animal类的成员属性和成员方法都会继承过来。

        但是Cat类和Dog类都重写了eat方法,那么当我们通过实例化这些类时,调用这些方法会发生什么呢?我们来看下面这个代码

public class Main {
    public static void main(String[] args) {
        Cat cat = new Cat("元宝",2);
        Dog dog = new Dog("小七", 1);
        eat(cat);
        eat(dog);
    }
    public static void eat(Animal a){
        a.eat();
    }
}

结合上面的代码运行起来后,其结果如下 :

元宝吃鱼~~~
元宝正在睡觉
小七吃骨头~~~
小七正在睡觉

 在上述代码中, 上方的代码是 类的实现者 编写的, 下方的代码是 类的调用者 编写的。

当类的调用者在编写 eat 这个方法的时候, 参数类型为 Animal (父类), 此时在该方法内部并不知道, 也不关注当前的 a 引用指向的是哪个类型(哪个子类)的实例. 此时 a这个引用调用 eat方法可能会有多种不同的表现(和 a 引用的实例 相关), 这种行为就称为 多态. 

 今天的内容就到这里啦,由于SE的内容不是那么难,所以我决定今天就完结SE了,明天开始数据结构?算法题讲解?MySQL?JavaEE?我也不清楚,看我心情吧,嗨嗨嗨。😍😍😍

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值