2012-03-12 41 views
1

我想在同一个子类中调用父构造函数和另一个构造函数。这是否允许?另外,我知道this()有一些限制(不得不先放置)super()?我可以在同一个构造函数中调用两者吗?super()和this()是否出现在相同的构造函数中?

+0

你考虑尝试吗? – EJP 2012-03-12 01:12:49

+0

我确实尝试过,但我想了解它背后的规则。我想确保我不会对我尝试过的东西感到幸运,而且类似的东西也会起作用。有时很难通过尝试不同的组合来辨别整个图像。我不是故意问一个坏问题。 – rubixibuc 2012-03-12 05:06:21

回答

3

在同一班,是的。

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

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

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

1

您打电话给您的另一个构造函数this(),并在此构造函数中调用super()

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

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

不接受问题。 – EJP 2012-03-12 01:14:21

+0

除外。示例代码,显示如何完成。 – 2012-03-12 01:31:28

+1

尽管解释非常短暂。 [emory](http://stackoverflow.com/a/9660478/377270)和[hunter](http://stackoverflow.com/a/9660529/377270)都提供了有关如何撰写出色答案的指导。 – sarnold 2012-03-12 01:46:07

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; 
    } 
} 
相关问题