对象是类的实例。尽管对象的表示在形式上与一般数据类型十分相似,但是它们之间存在一种本质区别:对象之间通过消息传递方式进行通信。 消息传递原是一种与通信有关的概念,OOP使得对象具有交互能力的主要模型就是消息传递模型。对象被看成用传递消息的方式互相联系的通信实体,它们既可以接收可以拒绝外界发来的消息。一般情况下,对象接收它能够识别的消息,拒绝它不能识别消息。对于一个对象而言,任何外部的代码都不能以任何不可预知或事先不允许的方式与这个对象进行交互。
发送一条消息至少应给出一个对象的名字和要发给这个对象的那条消息的名字。经常,消息的名字就是这个对象中外界可知的某个方法的名字。在消息中,经常还有一组数(也就是那个方法所要求的参数),将外界的有关信息传给这个对象。
对于一个类来说,它关于方法界面的定义规定了实例的消息传递协议,而它本身身定了消息传递的合法范围。由于类是先于对象构造而成的,所以一个类为它的实例提了可以预知的交互方式。例如,假设msg是类Manager的一个实例(或对象其中包含getMessage方法),当外界要求把这个对象所代表的那位经理的级别改变为2时,就应以下面的方式向这个对象发出一条消息:
msg.getMessage("helo");
发送一条消息至少应给出一个对象的名字和要发给这个对象的那条消息的名字。经常,消息的名字就是这个对象中外界可知的某个方法的名字。在消息中,经常还有一组数(也就是那个方法所要求的参数),将外界的有关信息传给这个对象。
对于一个类来说,它关于方法界面的定义规定了实例的消息传递协议,而它本身身定了消息传递的合法范围。由于类是先于对象构造而成的,所以一个类为它的实例提了可以预知的交互方式。例如,假设msg是类Manager的一个实例(或对象其中包含getMessage方法),当外界要求把这个对象所代表的那位经理的级别改变为2时,就应以下面的方式向这个对象发出一条消息:
msg.getMessage("helo");