[英]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.