【问题标题】:What use are constructors in abstract classes? [duplicate]抽象类中的构造函数有什么用? [复制]
【发布时间】:2011-03-11 00:09:45
【问题描述】:

既然我们不能实例化一个抽象类,那抽象类中有什么构造函数呢?

【问题讨论】:

标签: java oop constructor abstract-class


【解决方案1】:

一个例子:

public abstract class BaseClass
{
    private String member;

    public BaseClass(String member)
    {
        this.member = member;
    }

    ... abstract methods...
}

public class ImplementingClass extends BaseClass
{
    public ImplementingClass(String member)
    {
        /* Implementing class must call a constructor from the abstract class */
        super(member);
    }

    ... method implementations...
}

【讨论】:

    【解决方案2】:

    抽象类可以有字段和非抽象方法(是什么使它成为抽象类而不是接口)。在实例化扩展它的类时,可能需要初始化这些字段。

    在抽象类中有一个构造函数允许您调用super(foo); 来初始化它们,而不是直接这样做

    【讨论】:

      【解决方案3】:

      我们可以使用抽象类构造函数来执行与每个子类相关的代码。这样可以防止重复代码

      【讨论】:

        【解决方案4】:

        抽象类被设计为可扩展的,每个构造函数都来自子must perform a call to a constructor from the base class,因此您的抽象类中需要构造函数。

        抽象类是一个骨架,因此直接实例化它是没有意义的,因为它仍然不完整(子类将提供其余部分)。

        【讨论】:

          猜你喜欢
          • 2014-04-23
          • 2013-11-25
          • 2018-09-10
          • 2012-12-25
          • 2011-07-21
          • 2014-12-27
          相关资源
          最近更新 更多