如何在 Java 中的抽象类中强制实现嵌套抽象类



我是Java的新手,但习惯了OOP编程。有没有办法强制实现嵌套到另一个抽象类中的抽象类,如下面的代码所示:

public abstract class A
{
    public abstract class B extends C
    {
        @Override
        public abstract void foo();
    }
}

我希望 B 在 A 的每个子类中实现。可能吗?

谢谢你的帮助,

如果我没看错你的问题,你希望 A 的每个子类都包含 B 的一个子类,没有直接的方法可以做到这一点。但是,您可以执行以下操作:

public abstract class A
{
  public abstract class B extends C
  {
      @Override
      public abstract void foo();
   }
   protected abstract B getBInstance();
}

由于这会强制 A 的子类返回 B 的实例,因此它们必须有权访问 B 的某个子类。

但是,你真的应该问问自己,为什么 A 应该关心它的子类实现 B,除非 A 以某种方式使用 B,这需要上述内容。

是的,B成为接口,如抽象类实现接口时所示。

是不可能的。A 类应该只提供 A 实例的行为(通过抽象方法或实现的方法)。它不应该说明如何实现 A 的任何内容。

甚至不清楚这有什么用,因为你不能调用实现的类 B,所以它需要被命名为其他东西,这意味着它的存在可以被忽略。

最新更新