繁体   English   中英

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

[英]How to force implementation of a nested abstract class in an abstract class in Java?

我是Java的新手,但曾经使用过OOP编程。 有没有办法强制实现嵌套在另一个抽象类中的抽象类,如下面的代码所示:

public abstract class A
{

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

    }

}

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

谢谢您的帮助,

如果我正确阅读了您的问题,即您希望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,因此需要将其命名为其他名称,这意味着可以忽略它的存在。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM