多态的用处

作者: 芋山 | 来源:发表于2020-10-17 10:09 被阅读0次

直接先说结论,就是可以减少冗余代码

难处

之前在学多态的时候,有个疑问:

比如

//父类
public abstract class Animal {
    abstract void eat();
    abstract void sleep();
}

//子类
public class Bird extends Animal {
    @Override
    void eat() {
        System.out.println("鸟会吃饭");
    }

    @Override
    void sleep() {
        System.out.println("鸟会睡觉");
    }
    
    //特有能力
    void fly() {
        System.out.println("自己特有的能力,飞翔");
    }
}

如果这个时候:

//直接用多态
Animal bird = new Bird();
bird.eat();
bird.sleep();

bird.fly();//会报错.

//如果直接用子类创建自身
Bird bird = new Bird();
bird.eat();
bird.sleep();
bird.fly();
//都是可以用的

——————————————我是分割线—————————————————————————

既然我用多态会损失自身特有的方法

我何必多次一举呢?

概念

多态(Polymorphism)按字面的意思就是“多种状态”。

在面向对象语言中,接口的多种不同的实现方式即为多态。引用Charlie Calverts对多态的描述——多态性是允许你将父对象设置成为一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作(摘自“Delphi4 编程技术内幕”)。

看着定义,感觉一头雾水,啥叫多种状态,难不成还会变身?

还真的是变身,不过,就算 变身完之后,还是需要以夫类的身份进行活动

就像上面的例子,如果你是以动物的身份出现,就算你是鸟,也要抑制自己,不能使用飞翔的功能.

说到现在,那到底使用多态有什么好处呢?

明了

咱们举个例子

比如,现在森林举行运动会,动物们一听很开心.

每个动物都跑过来报名,那个场面太壮观了,不过,现场就出了问题:

动物太多了,主办方人不够,导致现场混乱,效率太低.

public class Organizer {
    //报名注册方法
    //猫来报名
    public void Registration(Cat cat) {
        
    }
    //狗来报名
    public void Registration(Dog dog) {
        
    }
    ......
}

现在只要来一种动物,就要加一个方法,重复代码.

这时候,主办方加了限制条件,必须证明自己是动物

修改报名注册方法,只要一个方法就可以应付所有的动物报名.

public class Organizer {
    //报名注册方法
    public void Registration(Animal animal) {
        
    }
}

那现在如何界定是不是动物呢?

//那就设置一个Animal的父类吧
public abstract class Animal {
    void eat();
    void sleep();
}

只要是继承Animal,就认为是动物,就有资格报名.

设计模式

如果想要更深入理解多态的好处,可以去了解,学习下设计模式。

相关文章

  • 多态的用处

    直接先说结论,就是可以减少冗余代码 难处 之前在学多态的时候,有个疑问: 比如 如果这个时候: —————————...

  • 1.9 多态基本概念

    本小节知识点: 【了解】什么是多态? 【掌握】多态的条件 【了解】多态的优点 1.什么是多态? 什么是多态:多态就...

  • C++ 的多态(Polymorphism), virtual f

    多态 c++支持两种多态,编译时多态和运行时多态但其实编译时多态根本不是真正的多态,编译时多态就是函数的重载,ov...

  • 详解Java多态

    详解Java多态 多态定义 多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化多态性和包含多态性。多态...

  • 多态

    1.多态 1.多态 1.1 要点 多态是方法的多态,不是属性的多态 多态的存在有三个必要条件:继承;方法重写;父类...

  • Java_basic_10: 多态polymorphism

    多态polymorphism 多态是指对象的多种形态 主要可以分为引用多态和方法多态 继承是多态的实现基础 引用多...

  • 六、多态与虚函数

    多态的基本概念 多态 多态分为编译时多态和运行时多态。 编译时多态主要是指函数的重载(包括运算符的重载)。对重载函...

  • Java基础之面向对象

    1.多态,继承,封装 Java实现多态有哪些必要条件?具体怎么实现?多态的实现原理?多态的作用? 答:多态的优点 ...

  • 多态与虚函数

    多态的基本概念 实现了多态机制的程序,可以使用同一个名字完成不同的功能。 多态分为编译时多态和运行时多态。 多态 ...

  • Java中的多态详解

    一、多态的概念 多态分为类的多态和方法的多态,类的多态就是一个类型可以有不同的表现形态,什么样的类型才会具备多态呢...

网友评论

    本文标题:多态的用处

    本文链接:https://www.haomeiwen.com/subject/ejuxmktx.html