急---------看似简单的概念问题(明天上午要考试了啊)

13060939425 2003-09-28 05:52:56
package kaoshi1;
class TestA
{
int t=8;
TestB b;
TestA()
{
System.out.println("making a");
b = new TestB(this);//a构造时,用自己作为参数构造B
}
}


class TestB
{
int e=33;
TestA a;
TestB(TestA a)
{
System.out.println("making b");
this.a = a;
}
}

class t01 {
public static void main (String args[])
{
new t01().makeThings();
}
void makeThings() {
TestA test = new TestA();
System.out.println(test.b.a.b.a.b.a.b.a.b.a.b.e);
}
}


--------------------------
---------------------------
运行结果如下:
making a

making b

33

*********************
以上说明, 实例test感觉上是一个无穷大的实例,因为a 中有b ,b 中又有a ,好象有无限制地循环, 可是编译器也不报错
谢谢指教
...全文
59 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
alittlekidwyw 2004-01-06
  • 打赏
  • 举报
回复
不大懂!
gong1 2004-01-06
  • 打赏
  • 举报
回复
^_^
是实例化和循环要分开。^_^
ustbzhangwei 2004-01-06
  • 打赏
  • 举报
回复
class TestA
{
TestB b = new TestB();
TestA()
{
System.out.println("making a");
}
}

class TestB
{
TestA a = new TestA();
TestB()
{
System.out.println("making b");
}
}

class t01 {
public static void main (String args[])
{
new t01().makeThings();
}
void makeThings() {
TestA test = new TestA();
}
}

写成这样,就是你感觉中的那样了,一层套一层的"无穷大的实例",
区别在于:
你的程序中,class TestB中的TestA a只是一个引用,而不是一个对象,它不会去构造一个TestA对象
class TestA中的TestB b也只是一个引用,而不是一个对象,它不会去构造一个TestB对象

我的程序中,class TestB中的TestA a = new TestA()不是引用,而是一个对象,构造了一个TestA对象
class TestA中的TestB b = new TestB()也不是引用,而是一个对象,构造了一个TestB对象

这样就循环构造对象,从语法上讲没有什么错误,编译时也就不会报错,但是这个程序却是无法运行的,因为构造不会终止
CharmingChen 2004-01-06
  • 打赏
  • 举报
回复
你循环又不管构造函数的事!构造函数是实例化的过程,你要搞清楚!
Screp 2004-01-06
  • 打赏
  • 举报
回复
TestB 中TestA并没有被实例化,所以只是在调用构造函数十进行一次初始化,不会构成你说的循环,ustbzhangwei说得很对.
panpan221 2004-01-02
  • 打赏
  • 举报
回复
两个构造函数都只运行一次
howlet 2003-09-29
  • 打赏
  • 举报
回复
b = new TestB(this)
在构建TestB对象时,只是把TestA实例的地址传给了TestB的构建函数。在TestB构建的时候只是让其变量a也指向了TestA的同一个实例,并没有创建新的实例。
sgdb 2003-09-29
  • 打赏
  • 举报
回复
两个构造函数都只运行一次,没有循环!
13060939425 2003-09-29
  • 打赏
  • 举报
回复
up

51,408

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧