Java:实施接口以扩展抽象类



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

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

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

最清洁的解决方案是在接口的Javadoc中定义此类要求。然后,在Javadoc中,它应该说明"要使用此接口,您需要从MyAbstractClass延伸或提供自己的实现"。这样,程序员负责实施。请记住,这是您试图解决技术性的社会学问题。

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

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

public abstract class MyAbstractClass implements MyInterface {
    ...
}
public class OneOfSeveral extends MyAbstractClass {
    ...
}

您不能强迫所有具体类以以其他方式扩展MyAbsTractClass,而不是从

中实际更改其定义
class A implements MyInterface

to

class A extends MyAbstractClass

,当然

abstract class MyAbstractClass implements MyInterface

写作时不需要另一个抽象类。

edit :关于您的评论:"我希望每一个MyInterface扩展MyAbsTractClass的每一个实现的另一种方式" - 您不能明智地执行此操作。您可以定义MyInterface扩展的另一个接口,并在您需要的情况下调用MyAbstractClassInterface,但是您仍然无法执行您的现有类扩展了一个摘要类,尽管它们当然必须实际实现定义的方法这个接口...

在我看来,您应该将接口丢弃并用抽象类替换。

欢呼,

最新更新