什么叫做两个对象之间互发消息呢?
发消息这个过程指的就是通过对象的引用调用对象的属性或是方法,就像是 对象的引用 给 对象发消息,然后再使用对象的成员
由发消息的含义我们可知,要给一个对象发消息,我们首先需要有该对象的引用(发消息的工具)
因此,要使两个对象之间可以互发消息,就需要在两个对象内部属性中都有对方的引用,从而实现两个对象之间相互关联
如何实现两个对象互发消息呢?
理论理解上很简单,只要两个对象内部属性都有对方的引用即可,那么实际代码该如何实现呢?
- 先实例化对象一
- 再用对象一去实例化对象二,使对象二与对象一相关联
- 在对象二的内部通过(调用对象一的方法 + this 指代本对象) 来使对象一与对象二相关联
- 两者相互关联后,即可在类内部调用对方的方法或域变量啦
例如下面所示的代码:
class A{
private B b;
int x;
A(int x){
this.x = x;
}
void set_B(B _b){
if(_b != null){
b = _b;
}
}
void smile(){
b.smile(); //通过给bbb对象发消息调用它的方法
}
}
class B{
private A a;
B(A _a){
this.a = _a; //本类的a对象实际就是aaa对象
a.set_B(this); //利用this指代本对象,实现A对象的初始化,使B与A相联系
}
void write(){
System.out.println(a.x); //通过aaa对象发消息调用它的域变量
}
void smile(){
}
}
class Run{
public void static main(String[] args){
A aaa = new A(3); //创建一个对象aaa
B bbb = new B(aaa); //创建以个对象bbb,并以aaa初始化
b.write();
}
}