我是 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,因此需要将其命名为其他名称,这意味着可以忽略它的存在。