java 强制扩展类

2022-09-02 01:11:36

在Java中,我是否可以以某种方式强制扩展抽象类的类以 Object 作为参数来实现其构造函数?

类似的东西

public abstract class Points {

    //add some abstract method to force constructor to have object.
}

public class ExtendPoints extends Points {

    /**
     * I want the abstract class to force this implementation to have
     *  a constructor with an object in it?
     * @param o
     */
    public ExtendPoints(Object o){

    }
}

答案 1

您可以在抽象类中将构造函数与参数一起使用(如果要禁止匿名子类,请使其受到保护)。

public abstract class Points{
    protected Points(Something parameter){
        // do something with parameter
    }
}

这样做,可以强制实现类具有显式构造函数,因为它必须使用一个参数调用超构造函数。

但是,不能强制重写类具有带有参数的构造函数。它总是可以像这样伪造参数:

public class ExtendPoints extends Points{
    public ExtendPoints(){
        super(something);
    }
}

答案 2

正如其他人之前所说,构造函数的签名不会强制执行,但您可以使用 AbstractFactory 模式来强制执行一组特定的参数。然后,您可以定义工厂接口的创建方法以具有特定签名。