有没有办法强制子类覆盖父类(super class)的非抽象方法?
我需要能够创建父类的实例,但是如果一个类扩展了这个类,它必须给出它自己的一些方法的定义。
最佳答案
据我所知,没有直接的编译器强制执行的方法。
您可以通过不使父类可实例化来解决它,而是提供一个工厂方法来创建具有默认实现的某些(可能是私有(private)的)子类的实例:
public abstract class Base {
public static Base create() {
return new DefaultBase();
}
public abstract void frobnicate();
static class DefaultBase extends Base {
public void frobnicate() {
// default frobnication implementation
}
}
}
你不能现在写new Base()
,但是你可以做Base.create()
来得到默认的实现。
关于java - 有没有办法制作一个非抽象但必须被覆盖的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7832444/