我有几个类实现接口MyInterface,我希望它们都扩展抽象类MyAbstractClass。最好的方法是什么?
有没有比创建扩展MyAbstractClass和实现MyInterface的另一个抽象类更好的方法?
(我发誓在发布之前我没有发现任何类似的问题)
答案 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
但是您仍然无法强制执行现有类扩展实现后一个接口的抽象类,尽管它们当然会必须实际实现此接口中定义的方法...
听起来你应该删除界面并用抽象类替换它。
干杯,