什么是多态

一、先来看看网上的一些解释

解释一

​ 在面向对象语言中,接口的多种不同的实现方式即为多态。

解释二

​ 同一个行为具有多个不同表现形式或形态的能力。

解释三

​ 同一操作(方法)作用于不同的对象时,可以有不同的解释,产生不同的执行结果。解释四:父类引用变量可以指向子类对象,即一个子类对象(实现类对象)既可以给这个子类(实现类对象)引用变量赋值,又可以给这个子类(实现类对象)的父类(接口)变量赋值。

二、多态的作用

​ 1.消除类型之间的耦合关系

​ 2.不但能够改善代码的组织结构和可读性,还能够创建可扩展的程序

三、《Thinking in Java》

​ 书中说,在面向对象的程序设计语言中,多态是数据抽象和继承之后的第三种基本特征。多态通过分离做什么和怎么做(这句话暂时理解不是很透彻),从另一个角度将接口和实现分离开来。

​ 中文版:多态方法调用允许一种类型表现出与其他相似类型之间的区别,只要它们都是从同一基类导出而来的。这种区别是根据方法行为的不同而表示出来的,虽然这些方法都可以通过同一个基类来调用。(英文版:The polymorphic method call allows one type to express its distinction from another, similar type, as long as they’re both derived from the same base type. This distinction is expressed through differences in behavior of the methods that you can call through the base class.) 这句话读起来比较拗口,可以翻译为当两个类继承自同一个基类(重写某方法),能在调用时看出两个相似类之间的差别,这是多态的一种体现。这种区别你可以通过调用基类的同一方法而得到不同的行为去证实。

​ 当编写一个方法,形参使用接口或者基类,传入的实参是接口的实现或者基类的子类,这就是一种多态。这里会引出一个话题,编译器是无法传入的是哪个具体的类,这里会引入一个绑定的概念。

​ 绑定:将一个方法调用同一个方法主体关联起来;前期绑定:在程序执行前进行绑定(如果有的话,由编译器和连接程序实现);后期绑定:在运行时根据对象的类型进行绑定,也叫动态绑定或运行时绑定;如果一种语言想实现后期绑定,就必须具有某种机制,以便在运行时能判断对象的类型,从而调用恰当的方法;

https://www.imooc.com/article/47925

©2020 洛易                        皖ICP备15026941号-4 该文件修订时间: 2019-09-19 09:02:24

results matching ""

    No results matching ""