java中两个类相互调用是属于传值调用还是传址调用? 即A类中新建B类对象,B类中也新建A类对象。
publicclassA{Bbi;publicA(){bi=newB(this);}voidseB(Bbi){this.bi=bi;}}publicclassB{Aai;...
public class A{
B bi;
public A(){ bi=new B(this); }
void seB(B bi){ this.bi=bi; }
}
public class B{
A ai;
public B(A ai){ this.ai=ai; ai.setB(this);}
}
public class AB{
public static void main(String []args){
A aa=new A();
}
}
————————————————————————
如上面代码。 新建对象aa时,在A类构造函数中有"bi=new B(this)" 这时候把this(即aa)作为值传入bi中, 这时候的传值是 传值还是传址?就是说在bi中改变ai会不会改变原本新建的aa?
另外在类B构造函数中有 "ai.setB(this)" 有什么意义?
两个类相互包含,这是为了方便两个类之间的参数共享使用吧?这种类型叫做,有专门术语? 展开
B bi;
public A(){ bi=new B(this); }
void seB(B bi){ this.bi=bi; }
}
public class B{
A ai;
public B(A ai){ this.ai=ai; ai.setB(this);}
}
public class AB{
public static void main(String []args){
A aa=new A();
}
}
————————————————————————
如上面代码。 新建对象aa时,在A类构造函数中有"bi=new B(this)" 这时候把this(即aa)作为值传入bi中, 这时候的传值是 传值还是传址?就是说在bi中改变ai会不会改变原本新建的aa?
另外在类B构造函数中有 "ai.setB(this)" 有什么意义?
两个类相互包含,这是为了方便两个类之间的参数共享使用吧?这种类型叫做,有专门术语? 展开
展开全部
记住,对象的传递,就是你所说的“地址传递”,修改值会相互影响。
"ai.setB(this)"有什么意义?除了这个还有getter()方法,setter()是用来设置值,而getter()方法是用来得到值。为什么这样设置呢?java里面不推荐外部直接访问类的成员变量,鼓励使用getter()、setter()方法来访问,成员变量一般都会设置为私有的。就像你这里,一般不会这样用:aa.bi =...;而使用:aa.seB(...);
“两个类相互包含,这是为了方便两个类之间的参数共享使用”这句你说对了,这个叫关联,不仅仅java这么叫,UML里都这么叫的
"ai.setB(this)"有什么意义?除了这个还有getter()方法,setter()是用来设置值,而getter()方法是用来得到值。为什么这样设置呢?java里面不推荐外部直接访问类的成员变量,鼓励使用getter()、setter()方法来访问,成员变量一般都会设置为私有的。就像你这里,一般不会这样用:aa.bi =...;而使用:aa.seB(...);
“两个类相互包含,这是为了方便两个类之间的参数共享使用”这句你说对了,这个叫关联,不仅仅java这么叫,UML里都这么叫的
展开全部
呵呵!Java中绝对没有传地址这一说法,也就是说在Java里只有传值!
貌似这种应用叫做“关联类”,确实可以更好的实现访问和数据共享!
public class A{
B bi;
public A(){ bi=new B(this); }
void setB(B bi){ this.bi=bi; }
}
执行A类的setB方法为A.bi赋值
其实别把自己绕进去,咱就看看A到底有什么属性?那么是包含了一个bi。同样B也是如此,包含一个ai
通过实例化一个对象,完成了"你中有我,我中有你",这种关联是一种双向的。
可以这样理解 "a的bi属性是B对象,B对象的逆属性是a的bi"
貌似这种应用叫做“关联类”,确实可以更好的实现访问和数据共享!
public class A{
B bi;
public A(){ bi=new B(this); }
void setB(B bi){ this.bi=bi; }
}
执行A类的setB方法为A.bi赋值
其实别把自己绕进去,咱就看看A到底有什么属性?那么是包含了一个bi。同样B也是如此,包含一个ai
通过实例化一个对象,完成了"你中有我,我中有你",这种关联是一种双向的。
可以这样理解 "a的bi属性是B对象,B对象的逆属性是a的bi"
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这样一来两个类中都有对方的句柄,都可以直接访问和调用对方.android中前台活动和后台服务之间就常常弄成这种解构.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个时候是传值
将当前对象作为ai对象的b属性放置进去
两个类相互包含这个倒是可以写,不过好像不太建议这么干吧
将当前对象作为ai对象的b属性放置进去
两个类相互包含这个倒是可以写,不过好像不太建议这么干吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询