Java抽象类,抽象的构造函数

时间:2015-01-06 14:00:45

标签: java

我正试图找到一种方法来强制实现接口的用户,或者扩展一个类来创建几个构造函数。我认为这样做的一种方法是在抽象类中创建一个抽象构造函数,但我发现我不能这样做。

我该如何解决这个问题?是否有一些方法可以强制用户创建特定的构造函数?

谢谢!

3 个答案:

答案 0 :(得分:6)

没有。 但是,由于构造函数经常被工厂方法替代,您可以实现抽象工厂方法或者其他模式,例如builderpattern。

答案 1 :(得分:5)

您无法创建abstract构造函数,但这是您可以执行的解决方法:

使用您希望用户实现的所有构造函数实现abstract类。在每个中,您将有一个语句引用此类中的abstract方法,这些实现将在子类中。这样,您将通过抽象方法实现强制用户为构造函数提供 body 。例如:

public abstract class MyAbstractClass {
    public MyAbstractClass(int param) {
        method1(param);
    }

    public MyAbstractClass(int param, int anotherParam) {
        method2(param, anotherParam);
    }

    protected abstract void method1(int param);

    protected abstract void method2(int param, int anotherParam);
}

在实现中,您将强制提供这两种方法的实现,这两种方法可以代表两个构造函数的主体:

public class MyClass extends MyAbstractClass {
    public MyClass(int param) {
        super(param);
    }

    public MyClass(int param, int anotherParam) {
        super(param, anotherParam);
    }

    public void method1(int param) {
        //do something with the parameter
    }

    public void method2(int param, int anotherParam) {
        //do something with the parameters 
    }
}

答案 2 :(得分:4)

不,没有。

但是,您可以构建一个利用反射的单元测试框架,以确保存在正确的构造函数。