java - 有没有办法制作一个非抽象但必须被覆盖的方法?

标签 java inheritance overriding abstract-class abstract-methods

有没有办法强制子类覆盖父类(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/

相关文章:

nhibernate - 流利的NHibernate自动映射与鉴别器

c++ - 关于虚拟参数和默认参数的问题

javascript - 在函数内访问覆盖的全局变量

java - Kotlin 对象类实例 get()

java - Oracle Coherence 覆盖缓存配置的 pof-config

java - 由于 obj.hasNext() 导致无限循环

c++ - 什么是对象切片?

java - 为什么我的 Java 服务器关闭套接字?

java - 将 NullPointerException 视为单元测试失败 : is it good practice?

c# - OOP:理解抽象