我是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,所以它需要被命名为其他东西,这意味着它的存在可以被忽略。