Java抽象类,抽象构造函数

标签 java

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

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

谢谢!

最佳答案

您无法创建抽象 构造函数,但您可以使用以下解决方法:

使用您希望用户实现的所有构造函数实现一个抽象类。在它们中的每一个中,您将有一个引用此类的抽象方法的语句,这些方法将在子类中实现。这样,您将强制用户通过抽象方法实现为构造函数提供 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 
    }
}

关于Java抽象类,抽象构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27800229/

相关文章:

java - 用于查找给定距离内所有地理点的Android算法

java - 如何减小 jar 的大小

java - 如何规范化 ZonedDateTime 以便 .equals() 起作用?

java - Android获取移动网络频段

java - 在 Java 中并行读取/处理结果集

java - 如何从 Java 中的 randDouble 中获取 1 - 100 之间的随机数?

java - 为什么同样宽高的图片尺寸不一样?

java - 创建重新检查 if 语句

java - 如何替换矩阵中的零?

Java 将双输入转换为小数点后两位的分离方法