我想在同一个子类中同时调用父构造函数和另一个构造函数。这是允许的吗?另外,我了解this()
对super()
有一些限制(必须放在第一位){{1}}?我可以在同一构造函数中调用两者吗?
答案 0 :(得分:3)
在同一个班级,是的。
class Stuff extends Object
{
Stuff ( )
{
super ( ) ;
}
Stuff ( int x )
{
this ( ) ;
}
}
在同一个构造函数中,没有。
super
或this
必须是构造函数中的第一件事。
如果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)
}