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

时间:2012-04-25 15:28:55

标签: java class nested abstract

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

public abstract class A
{

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

    }

}

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

感谢您的帮助,

3 个答案:

答案 0 :(得分:5)

如果我正确地阅读了你的问题,你希望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,这需要上述。

答案 1 :(得分:2)

是的,将B作为界面,如When an Abstract Class Implements an Interface

所示

答案 2 :(得分:0)

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

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