1

以下はJavaでは機能しません。Eclipseは、そのようなコンストラクターがないと文句を言います。サブクラスにコンストラクターを追加して回避しましたが、私がやろうとしていることを実行する別の方法はありますか?

public abstract class Foo {
    String mText;

    public Foo(String text) {
        mText = text;
    }  
}

public class Bar extends Foo {

}

Foo foo = new Foo("foo");
4

2 に答える 2

10

Foo抽象的であるため、インスタンス化できません。

代わりにBar、コンストラクターを呼び出すコンストラクターが必要super(String)です。

例えば

public Bar(String text) {
   super(text);
}

textここでは、文字列をスーパー コンストラクターに渡しています。ただし、次のことができます(たとえば):

public Bar() {
   super(DEFAULT_TEXT);
}

コンストラクトは、サブクラス コンストラクターのsuper()最初のステートメントである必要があります。

于 2010-02-08T21:58:04.247 に答える
0

抽象クラスからインスタンス化することはできません。それがここで試みていることです。次のことを意味していませんでしたか?

Bar b = new Bar("hello");

???

于 2010-02-08T22:00:24.633 に答える