我有几个类实现了接口 MyInterface,我希望它们都扩展抽象类 MyAbstractClass。最好的方法是什么?
有没有比创建另一个扩展 MyAbstractClass 并实现 MyInterface 的抽象类更好的方法?
(我发誓在发布之前我没有发现任何这样的问题)
我有几个类实现了接口 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
至
class A extends MyAbstractClass
而且当然
abstract class MyAbstractClass implements MyInterface
不过,您在编写时不需要另一个抽象类。
编辑:关于您在下面的评论:“我想要 MyInterface 的每个实现都扩展 MyAbstractClass 的另一种方式”-您无法明智地强制执行。您可以定义另一个MyInterface
扩展并调用它的接口,MyAbstractClassInterface
如果您愿意,但您仍然无法强制现有类扩展实现后一个接口的抽象类,尽管它们当然必须实际实现此接口中定义的方法...
在我看来,您应该删除接口并将其替换为抽象类。
干杯,