如何利用this实现两个对象相互关联互发消息呢?

什么叫做两个对象之间互发消息呢?

发消息这个过程指的就是通过对象的引用调用对象的属性或是方法,就像是 对象的引用 给 对象发消息,然后再使用对象的成员

由发消息的含义我们可知,要给一个对象发消息,我们首先需要有该对象的引用(发消息的工具)

因此,要使两个对象之间可以互发消息,就需要在两个对象内部属性中都有对方的引用,从而实现两个对象之间相互关联

如何实现两个对象互发消息呢?

理论理解上很简单,只要两个对象内部属性都有对方的引用即可,那么实际代码该如何实现呢?

  • 先实例化对象一
  • 再用对象一去实例化对象二,使对象二与对象一相关联
  • 在对象二的内部通过(调用对象一的方法 + 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();
	}
}

猜你喜欢

转载自blog.csdn.net/qq_51800570/article/details/121167541