日期:2014-05-20  浏览次数:20660 次

为什么类可以循环定义?
其实我也不太清楚循环定义具体什么意思。
我的意思是指这个:
Java code

class A {
// ...
public void go() {
A a = new A();
// ...
}
// ...
}


虽然能编译通过。但是让人费解,定义类A的时候就用到了它本身!(有点像递归)
估计我的表达也有点费解,有人看明白没。。。

------解决方案--------------------
这不是循环定义,不但Java中可以,而且C++中以及所有的面向对象程序设计语言都可以这样做的。

其实原因非常简单,在类的方法里面出现本类的对象并不会引起逻辑困难,因为类的方法只有在该方法被调用的时候才会需要被执行,它是不进入对象的内存空间的,所以,在你构造一个对象的时候,不必考虑它的方法的细节代码
,这样一来,类的方法里出现本类的对象就不会引起语义的含混不清,因此是没有任何问题的。