为什么super()和this()调用语句不能同时在一个构造函数中出现?
  为什么super()和this()调用语句只能作为构造函数中的第一句出现?
 谢谢了  小弟是菜鸟  刚刚学java

解决方案 »

  1.   

    super() 和 this() 都是要求在构造函数中的第一句位置调用,
       所以不可能在同一构造中同时调用super()和this().
    super()和this()分别是显示的调用了父类和本类的无参构造函数,这样的话JVM就不会自动调用默认的构造了。
    其实在不显示调用super()和this(),JVM还是会去调用的,只是调用工作留给了JVM来完成了。
    因此,如果你在构造函数显示的调用构造super()或者this(),必须是要放在第一个语句上。
      

  2.   

       其实我们平时写的代码,没有在构造中调用super()和this()m,JVM在运行代码的时候也会去调用的。这就是JVM会调用默认构造函数。
       如果在程序中写了super()和this(),就相当与显示的去调用构造儿也。
      

  3.   

    ls理解有误,super是调用父类的构造函数,当然包括含有参数的构造函数,this是调用自己的类的重载的构造函数,
    为什么在第一句,这个应该是规定吧。
      

  4.   

    this(),super()这不就是调用无参的嘛,
    如果是有参数的那就必须是要显示的调用了的啊super(参数1,参数2).
      

  5.   

    LS的正解!!!放在第一行应该是约定的吧!!!
    我博客里有关于this的三大用法,建议LZ看一下!!!
    http://blog.csdn.net/aa278489710/archive/2008/11/14/3298014.aspx
      

  6.   

    this经常是一些实例变量与某些方法重名时,引用方法内的变量
      

  7.   

    this的作用
    第一代表的是创建的当前的对象,对隐士参数的引用;
    第二是调用同一类的构造函数
      

  8.   

    关于第一个super()可以出现,而this()不能,因为如果调用会是递归构造函数,是不允许的
    关于第二个就像前面说的那样,java怕修改当前对象或父类对象的参数,而引起麻烦,就规定只能在第一条出现,如果不是就会报错
      

  9.   

    java是c++的改版,也是面向对象语言
    所以可以用c++来解释
    使用super就说明你的构造函数要调用基类
    按照c++的规则,执行子类的构造函数首先要分配内存空间,然后调用基类的构造函数,然后是子类的构造函数
    所以super要放在首位