7

我有几个类实现了接口 MyInterface,我希望它们都扩展抽象类 MyAbstractClass。最好的方法是什么?

有没有比创建另一个扩展 MyAbstractClass 并实现 MyInterface 的抽象类更好的方法?

(我发誓在发布之前我没有发现任何这样的问题)

4

3 回答 3

6

最简洁的解决方案是在接口的 JavaDoc 中定义这样的要求。在 JavaDoc 中,它应该声明类似“要使用此接口,您需要从 MyAbstractClass 扩展或提供您自己的实现”。这样,程序员负责实现。请记住,这是一个你试图解决技术性的社会学问题。

另一个“解决方案”是删除接口并使用抽象类。在抽象类中实现接口在这里没有意义。

于 2012-10-18T11:47:19.437 回答
5

您可以定义MyAbstractClass实现MyInterface,然后让所有其他类扩展MyAbstractClass

public abstract class MyAbstractClass implements MyInterface {
    ...
}

public class OneOfSeveral extends MyAbstractClass {
    ...
}
于 2012-10-18T11:26:24.027 回答
0

您不能强制所有具体类以任何其他方式扩展 MyAbstractClass,而不是实际更改它们的定义

class A implements MyInterface

class A extends MyAbstractClass

而且当然

abstract class MyAbstractClass implements MyInterface

不过,您在编写时不需要另一个抽象类。

编辑:关于您在下面的评论:“我想要 MyInterface 的每个实现都扩展 MyAbstractClass 的另一种方式”-您无法明智地强制执行。您可以定义另一个MyInterface扩展并调用它的接口,MyAbstractClassInterface如果您愿意,但您仍然无法强制现有类扩展实现后一个接口的抽象类,尽管它们当然必须实际实现此接口中定义的方法...

在我看来,您应该删除接口并将其替换为抽象类。

干杯,

于 2012-10-18T11:32:25.220 回答