我有几个类实现接口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
,但是您仍然无法执行您的现有类扩展了一个摘要类,尽管它们当然必须实际实现定义的方法这个接口...
在我看来,您应该将接口丢弃并用抽象类替换。
欢呼,