当用this调用构造函数时,为什么要放在构造函数的第一条语句?要求从内存角度说明,勿喷...

解决方案 »

  1.   


    从内存角度?你怎么知道是因为内存角度的问题才强制让this放第一位呢?这有可能是考虑到程序的逻辑性才强制把this放第一位,也有可能是因为JVM的实现方式才把this放第一位。
      

  2.   

    不懂,第一次听说从内存角度解释This,学习。。
      

  3.   

    其实这就是一个规定,你可以这么理解。你先掉用this() 来创建实例,然后再做其它初始化动作 但是如果你放在后面,先做了其它初始化动作,你再掉用this()可能会覆盖前面的初始化动作。
      

  4.   

    我之前也差不多问过和你同样地问题,如果想了解其基本原理,估计也是浪费时间。我估计是出于语言安全的因素,sun根本就没有做过更深入的解释。只是在JDKTM Documentation中对this和super两个keyword的功能做了简单的解释,具体内容可以查询一下。对于这个问题可以不用深究了,可以结帖了!
      

  5.   

    因为,生成构造器的时候,会默认的生成父类的构造器,super();调用父类的构造器,除了Object类 都有父类,
     如果,你没有显示的写this ,构造器默认的会生成super(), 因为,java语法规定了 super()和this()不能同时存在,所以   假设java没有这个语法,你想下,你用this()调用构造器,你调用的那个构造器,本身就带了super()所以,会出现两次调用,super(),所以