以下在Java中对我不起作用。 Eclipse抱怨说没有这样的构造函数。我已经将构造函数添加到子类中以绕过它,但还有另一种方法可以做我正在尝试做的事情吗?
public abstract class Foo {
String mText;
public Foo(String text) {
mText = text;
}
}
public class Bar extends Foo {
}
Foo foo = new Foo("foo");
答案 0 :(得分:10)
您无法实例化Foo
,因为它是抽象的。
相反,Bar
需要一个调用super(String)
构造函数的构造函数。
e.g。
public Bar(String text) {
super(text);
}
这里我将text
字符串传递给超级构造函数。但你可以做(例如):
public Bar() {
super(DEFAULT_TEXT);
}
super()
构造需要是子类构造函数中的第一个语句。
答案 1 :(得分:0)
你无法从抽象类中实例化,而这正是你在这里尝试的。你确定你不是故意的:
Bar b = new Bar("hello");
???