【发布时间】:2015-03-18 19:42:43
【问题描述】:
我有一个具有这个构造函数的超类:
public Super(String p){
String[] result = p.split(",");
setA(result[0]);
setB(result[1]);
setC(result[2]);
setD(result[3]);
setE(result[4]);
}
然后我有一个子类,我想在其中使用相同的构造函数,但还要添加 2 个字符串。这是我的代码:
public Sub(String d){
super(d);
setF(result[5]);
setG(result[6]);
}
使用此代码时,我收到未指定结果的错误。我该如何解决这个问题?
【问题讨论】:
-
将其作用于类而不是构造函数。
-
在超类还是在子类?
-
@tnw:根据我对 Andremoniy 的 cmets,如果这不是构造后实例的逻辑状态,你为什么要让它成为一个字段?这是一种非常讨厌的设计气味。
-
在构造函数中调用方法通常也是代码异味。这对于返回
Super或Sub的工厂方法来说可能是一个不错的选择,并将各个参数传递给构造函数。 -
@JonSkeet 是的,这只是基于给出的信息的猜测。我不反对,但显然这是 OP 基于下面接受的答案所需要的。不过我更喜欢你的。
标签: java inheritance constructor constructor-chaining