多态消息的理解

对象有一个奇妙的机制就是多态消息。

刚看到这句话时就一个想法:什么鬼?后来才知道其实就是多态的应用。

那么多态消息是什么呢?

消息是一个术语:

指一个对象调用另一个对象的成员函数(c++)或者方法(java)。

多态机制有两种:

一种是静态多态,即编译时就已经确定,运行时调用的是已经确定的方法(消息),常见的就是重载:方法名相同,参数不同。

一种是动态多态,即编译时不确定调用哪个方法,一直延迟到运行到那个地方才能确定,因此多态方法又叫延迟方法。

多态有两种实现方式:

一种是子类继承父类。

一种是类实现接口。

两种方法的核心目的都是以一个消息(调用一个方法方法)来实现运行时的不同效果,方式为:对父类方法的复写或对接口方法的实现。

因此总结出使用多态有一个法则:

声明的总是父类型或者接口类型,创建的时实际类型。举例来说用多态创建一个arraylist,就应该用这样的语句

List list = new ArrayList(),

而不是

ArrayList list = new ArrayList()。

定义方法参数也应该优先使用父类类型或接口类型,比如一个方法定义参数是list数组,那就应该用List而不是ArrayList,这样才符合多态机制。

为什么?因为这样声明最大的好处在于结构的灵活性:假如某一天我认为ArrayList的特性无法满足我的需求,需要用LinkedList来代替它,那么只需要把对象创建的地方new ArrayList()改为new LinkedLIst()即可,其他代码一概不动。不然可能就要改变这个函数的传参或者重载这个函数,将大大增加代码量和结构的臃肿。

所以反过来就可以得到多态的作用:

对结构和设计的复用。定义功能和组件时定义接口,实现留在之后的流程中。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 33,195评论 18 399
  • 1.import static是Java 5增加的功能,就是将Import类中的静态方法,可以作为本类的静态方法来...
    XLsn0w阅读 5,075评论 0 2
  • 面向对象主要针对面向过程。 面向过程的基本单元是函数。 什么是对象:EVERYTHING IS OBJECT(万物...
    sinpi阅读 4,798评论 0 4
  • (一)Java部分 1、列举出JAVA中6个比较常用的包【天威诚信面试题】 【参考答案】 java.lang;ja...
    独云阅读 11,948评论 0 62
  • 我坐在小婷的床边静静地看着她,这个让我愿意为之付出一切的女人这一刻就这么安静的躺在病床上。此刻的她已不能再像以前一...
    阑尘阅读 3,339评论 0 4

友情链接更多精彩内容