我是Java的新手,但习惯于OOP编程。有没有办法可以强制实现嵌套到另一个抽象类中的抽象类,如下面的代码所示:
public abstract class A
{
public abstract class B extends C
{
@Override
public abstract void foo();
}
}
我希望B在A的每个子类中实现。是否可能?
感谢您的帮助,
答案 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因此它需要被命名为其他意味着它的存在可以被忽略。