首先申明我是个菜鸟,才看了进一个星期,本人在看thinking in java的时候发现里面有很多的例子是先下面的,public class inherit
{
String name = new String("ok\n");
inherit obj = new inherit();
public static void main(String[] args)
{
inherit tmp = new inherit();
System.out.println("game over\n");
}

}
这不是原例但是我在想他这样做的话在类inherit还没有完全的申明的时候,就可以建对象实例的话那么,也就是上面的例子那么这里obj就是是在递归的生成了,这很显然就是个缺陷,为什么那本书的作者还要那他作为例子,其次为什么java不学c++在类没建立完整的时候不允许生成实例对象,只是允许生成一个本对象的引用呢?
求解

解决方案 »

  1.   

    你确定这个类能运行而不会抛出StackOverflowError
      

  2.   

    main是程序的入口函数 , static是属于类的不属于对象 ,static在类加载的时候会加载到方法区 
      

  3.   

    ++
    构造方法是私有的private,做的一个单例
      

  4.   

    少打了几个字,别个代码肯定多加了  构造方法是私有的private,做的一个单例
      

  5.   

    少打了几个字,别个代码肯定多加了  构造方法是私有的private,做的一个单例
      

  6.   

    会抛出StackOverflowError,要看清楚作者在说什么问题
      

  7.   

    LZ的意思是“也就是上面的例子那么这里obj就是是在递归的生成了,这很显然就是个缺陷”,但实际上:不能
      

  8.   

    就现在这代码而言的话,会抛出StackOverflowError异常的、
      

  9.   

    thinking in java是一本好书  我也是新手 
      

  10.   

    这是LZ创造出来的bug吧?或是书上故意写出这样的bug举例?
      

  11.   

    先看看基本的java语法
    然后等你能够熟练的使用java的时候再去think in java吧
    从技术上升到思想是一件很难的事情
    别一开始就搞华丽的理论
    没实际意义
    写代码
    是不断地经验累积的
    新手同志
      

  12.   

    楼上说的也不是不无道理,我在看thinking in java中的时候确实看的很痛苦,语法挺难理解的,看的恨不得将书撕了,看到那些翻译也不觉有点觉得不合常理,和那些根本就无法念通顺名词(至少我是觉得这样的),但是我发现尽管我看的很蛋疼,但是我 一直在思考,这适合我开始学c的时候看谭老师的书的时候就是模仿也,书写的是浅显易懂,我甚至就没思考,经一个月的时间就看完了,但是我后来我在看一些别人写的代码的时候总觉得好多东西好像书上没说就不知道怎么用自己学的来推理,他大概应该是怎么样的,为什么这样,后来下学期学c++的时候没事就买了本厚点的书the c++ programming language看了看,开始四个月看了不到四十页,根本不知道他在说什么,但是后来接下来的一个暑假我重拾信心有看了看,这下虽说还是很蛋疼的看但是感觉看了一遍自我感觉还是学到了挺多。
    其实我觉得先看那些比较好的书就不会走太多弯路。
      

  13.   

    这个BUG挺不错的,我没有写多少代码,但是我知道写这个代码是绝对不能运行的,思想上的东西,我不懂。