多态

多态

先看代码:

package com.happy.oop.demo04;

public class Demo1 {
    public static void main(String[] args) {
        Dog dog1 = new Dog();       //正常创建一个对象
        Animal dog2 = new Dog();    //这就是多态

        dog1.shout();
        dog2.shout();
    }
}

运行结果:

Animal类:

package com.happy.oop.demo04;

public class Animal {

    public void shout() {
        System.out.println("动物叫了一声");
    }
}

Dog类:

package com.happy.oop.demo04;

public class Dog extends Animal {
    @Override
    public void shout() {
        System.out.println("汪汪汪");
    }
}

再来看百度百科

编程语言类型论中,多态(英语:polymorphism)指为不同数据类型的实体提供统一的接口多态类型(英语:polymorphic type)可以将自身所支持的操作套用到其它类型的值上。

一般Java实现多态有3个条件:继承、重写、向上转型

另外可以看到,Dog dog1对应的dog1.shout();输出了"汪汪汪",这是没有疑问的,但是,Animal dog2对应的dog2.shout();居然也输出了"汪汪汪",这就体现了多态,即父类的引用指向了子类对象。

关于多态代码的执行有一句话可以用来简记:编译看左边,运行看右边。

​ 为什么要用多态呢?举个例子,老板说准备开发一款动物机器人,然后说这款动物机器人有叫、走路、睡觉、撒娇等等功能,但具体是什么动物呢,还没有确定,等确定再通知你们硬件部和软件部。硬件部可能只能采购一些简单的元器件,做一下简单的测试,而软件部就不一样了,软件部先Animal animal = new Animal();把基本的工作干完了,等老板确定什么动物后,该狗动物就修改Animal animal = new Dog();就行,该猫动物就修改Animal animal = new Cat();就行,代码就完成,再也不用熬夜通宵了,又可以继续摸鱼了,而硬件部的工作可能才刚刚开始。

posted @ 2021-06-30 15:10  初中生林开心  阅读(90)  评论(0)    收藏  举报