super()和this()可以出现在同一个构造函数中吗?

时间:2012-03-12 00:50:43

标签: java constructor

我想在同一个子类中同时调用父构造函数和另一个构造函数。这是允许的吗?另外,我了解this()super()有一些限制(必须放在第一位){{1}}?我可以在同一构造函数中调用两者吗?

4 个答案:

答案 0 :(得分:3)

在同一个班级,是的。

class Stuff extends Object
{
      Stuff ( )
      {
            super ( ) ;
      }

      Stuff ( int x )
      {
            this ( ) ;
      }
}

在同一个构造函数中,没有。 superthis必须是构造函数中的第一件事。 如果super是第一个,那么this不能是第一个。 如果this是第一个,那么super不能是第一个。 它们不能在同一个构造函数中共存。

答案 1 :(得分:1)

您使用this()调用另一个构造函数,并在此构造函数中调用super()

答案 2 :(得分:1)

只需将super()的调用放在其中一个构造函数中:

public class Foo extends Bar 
{
   private int y;

   public Foo(int x)
   {
      this(x, 0);
   }

   public Foo(int x, int y)
   {
      super(x);
      this.y = y;
   }
}

public class Bar
{
   private int x;

   public Bar(int x)
   {
      this.x = x;
   }
}

答案 3 :(得分:0)

// Call constructor overload in this class (below)
public Foo(){
   this("Some stuff");
}

// Call constructor overload in superclass.
public Foo(String stuff){
   super(stuff)
}