PhD*_*PhD 12 java constructor superclass
我以前从未需要这样做,但由于两者都必须是构造函数中的"第一行",应该如何解决它?对于这样的情况,最好的重构是什么?
这是一个示例:
public class Agreement extends Postable {
public Agreement(User user, Data dataCovered)
{
super(user);
this(user,dataCovered,null);
}
public Agreement(User user,Data dataCovered, Price price)
{
super(user);
if(price!=null)
this.price = price;
this.dataCovered = dataCovered;
}
...
}
Run Code Online (Sandbox Code Playgroud)
呼吁super(user)是绝对必须的.在这种情况下如何处理"可选参数"?我能想到的唯一方法就是重复,即根本不要称之为(...).只需在每个构造函数中执行赋值.
S.L*_*ica 14
你不能同时调用super(..)和this(...).你可以做的是重新设计你的overloadeded构造函数的结构,这样最后一个被调用的将调用super(...).如果这不是一个选项,您将必须在每个构造函数中进行分配.
如果你调用this(user,dataCovered,null),第二个构造函数将被调用,它将要做的第一件事是调用超级构造函数.所以super(user);第一个构造函数中的行是不必要的.