如何实现两个对象之间互发消息

要说实现两个对象之间互发消息,就必须要谈一下消息的概念。 对象和对象引用好比生活中电视机与遥控器的关系,遥控器是采用红外线的方式控制电视,而引用控制对象采用的则是发消息的方式。使用引用的属性或方法其实都是调用对象的属性和方法,而消息概念的引入就是说明这样的一个过程。因此,消息的实质就是引用向对象发出的服务请求,是数据成员和成员方法的调用,例如fp.name和fp.fire()就是发送消息。 上面我们了解了消息的概念,那么改如何实现两个对象之间互发消息,其实就是通过使用一个对象的引用来调用另一个对象的数据成员或成员方法,这样两个对象被联系到了一起,实现了消息的发送。 下图是对象之间互发消息的例子:

在这里在图片中一共给出了三个类,其中在Run类中第38行创建了ftp对象引用,并且在第40行创建了A对象,并将ftp引用作为参数传入,而且在创建A的对象中调用了A的构造函数,从而将fp指向了ftp引用指向的对象,下面第42行调用了A类的invoke函数,即在这个过程中Run对象给类A发送了消息,而invoke函数又调用了FighterPlane的函数,从而实现A类向FighterPlane发送消息。 这个过程看似简单,但是其中需要注意的地方还是有不少。首先Run类想要调用A类的函数从而向类A发消息,那么Run类就必须要有访问类A的权限,其次类A中要有被调用的invoke函数。 总结:能否发送消息取决于以下三个条件: (1):应用必须真实引用了特定的对象,否则会在运行时抛出NullPointerException异常。 (2):被访问的对象必须定义了相应的属性和方法,否则编译不会通过。 (3):被访问的属性和方法必须要有可访问的权限。

经验分享 程序员 微信小程序 职场和发展