Java:强制实现接口以扩展抽象类

时间:2012-10-18 11:21:18

标签: java interface abstract-class

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

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

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

3 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分:4)

您可以定义MyAbstractClass来实施MyInterface,然后将所有其他类扩展为MyAbstractClass

public abstract class MyAbstractClass implements MyInterface {
    ...
}

public class OneOfSeveral extends MyAbstractClass {
    ...
}

答案 2 :(得分:0)

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

class A implements MyInterface

class A extends MyAbstractClass

当然

abstract class MyAbstractClass implements MyInterface

但是,在编写时不需要另一个抽象类。

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

听起来你应该删除界面并用抽象类替换它。

干杯,