1

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

public abstract class A
{

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

    }

}

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

谢谢您的帮助,

4

3 回答 3

6

如果我正确阅读了您的问题,您希望 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。

于 2012-04-25T15:39:10.303 回答
2

是的,创建B一个接口,如抽象类实现接口时所示。

于 2012-04-25T15:31:05.470 回答
0

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

甚至不清楚这将如何有用,因为您无法调用已实现的类 B,因此需要将其命名为其他名称,这意味着可以忽略它的存在。

于 2012-04-25T15:38:50.097 回答