【问题标题】:How do I declare a default constructor for sub-class of abstract class?如何为抽象类的子类声明默认构造函数?
【发布时间】:2010-02-08 21:56:37
【问题描述】:

以下内容在 Java 中对我不起作用。 Eclipse 抱怨没有这样的构造函数。我已将构造函数添加到子类以绕过它,但是还有其他方法可以做我想做的事情吗?

public abstract class Foo {
    String mText;

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

public class Bar extends Foo {

}

Foo foo = new Foo("foo");

【问题讨论】:

    标签: java class constructor abstract


    【解决方案1】:

    你不能实例化Foo,因为它是抽象的。

    相反,Bar 需要一个调用 super(String) 构造函数的构造函数。

    例如

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

    在这里,我将text 字符串传递给超级构造函数。但你可以这样做(例如):

    public Bar() {
       super(DEFAULT_TEXT);
    }
    

    super() 构造必须是子类构造函数中的第一条语句。

    【讨论】:

    • 谢谢。我的意思是 Bar bar = new Bar("bar");我已经实现了你的解决方案,但我不确定你是否必须在 Java 中实现构造函数。
    【解决方案2】:

    您不能从抽象类进行实例化,而这正是您在这里尝试的。你确定你不是故意的:

    Bar b = new Bar("hello");
    

    ???

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-10-22
      • 1970-01-01
      • 2018-09-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-04
      相关资源
      最近更新 更多