以前学习面向对象的时候,对这消息的概念一直很不解,对多态也是一知半解。最近在看书的过程中,逐渐明白了这两个概念。现将对两者的理解整理如下:
OOP使得对象具有交互能力的主要模型就是消息传递模型。对象被看成用传递消息的方式互相联系的通信实体,它们既可以接受、也可以拒绝外界发来的消息。一般情况下,对消接收它能够识别的消息,拒绝它不能识别的消息。对于一个对象而言,任何外部代码都不能以任何不可预知或事先不运行的方式与这个对象进行交互。
发送一条消息至少应给出一个接收 对象的名字和要发给这个对象的那条 消息的名字。通常,消息的名字就是这个对象中外界可知的某个方法的名字。在消息中,经常还有 一组参数(也就是那个方法所要求的参数),将外界的信息传给这个对象。
对于一个类来说,它关于方法界面的定义规定了实例的消息传递协议。
通俗地说,消息就是类中声明为public的方法(接口)。而消息传递就是在一个对象的某个方法中调用另一个对象中的某个方法。
Cardelli and Wegner把多态从语言设计的角度分为通用多态( universal )和特定多态( ad-hoc)。
通用多态又分为参数( Parametric )多态和包含( Inclusion)多态;特定多态包含重载(overloading )
多态和强制(coercion )多态。
具体分类如下图所示:
|-- parametric
|-- universal --|
| |-- inclusion
polymorphism --|
| |-- overloading
|-- ad hoc --|
- 消息和消息传递
OOP使得对象具有交互能力的主要模型就是消息传递模型。对象被看成用传递消息的方式互相联系的通信实体,它们既可以接受、也可以拒绝外界发来的消息。一般情况下,对消接收它能够识别的消息,拒绝它不能识别的消息。对于一个对象而言,任何外部代码都不能以任何不可预知或事先不运行的方式与这个对象进行交互。
发送一条消息至少应给出一个接收 对象的名字和要发给这个对象的那条 消息的名字。通常,消息的名字就是这个对象中外界可知的某个方法的名字。在消息中,经常还有 一组参数(也就是那个方法所要求的参数),将外界的信息传给这个对象。
对于一个类来说,它关于方法界面的定义规定了实例的消息传递协议。
通俗地说,消息就是类中声明为public的方法(接口)。而消息传递就是在一个对象的某个方法中调用另一个对象中的某个方法。
- 多态
Cardelli and Wegner把多态从语言设计的角度分为通用多态( universal )和特定多态( ad-hoc)。
通用多态又分为参数( Parametric )多态和包含( Inclusion)多态;特定多态包含重载(overloading )
多态和强制(coercion )多态。
具体分类如下图所示:
|-- universal --|
| |-- inclusion
polymorphism --|
| |-- overloading
|-- ad hoc --|