所以你有一个接口和一个抽象类,它实现了接口中方法的一个子集。您还有一些类继承了抽象类,并给出了抽象类不提供的方法的实现。java中的抽象类和接口最佳实践
那么这里最好的做法是什么?我正在讨论的问题如下:
1)抽象类应该实现接口还是应该实现其子类?应该每班上课吗?在我看来,只有抽象类应该。当然,所有的类都可以实现这个接口,但这似乎是多余的,因为抽象的孩子会继承接口,因为它们扩展了抽象类。 2)鉴于抽象类实现了接口的一部分,它是否也为其未实现的方法声明了抽象方法?在我看来,这是对的,但从某种程度上看,这似乎是多余的,因为抽象的孩子们需要实施这些方法才能编译。
那么你最好的做法是什么?问题归结为:我们有一个接口来定义我们想要某些类所做的事情,我们在接口中定义了一些方法的子集来定义常见行为,并且我们有几种不同的方法来定义非常见的行为。解决这个问题的最好方法是什么?
+1,我会补充一点,如果我亲眼看到一个实现了Foo的具体类,并且扩展了AbstractFoo,那么我的第一个直觉就是Foo和AbstractFoo甚至可能没有关系。随着名字变得不那么明显,更多地引起混淆。 – PSpeed 2009-12-19 08:42:05
接口并不意味着进化和改变... – TofuBeer 2009-12-19 09:30:13
程序发展(因为您添加新功能,修复错误,无论如何),这会导致底层构件(类,接口,方法...)发生变化。例如,你可能会决定一个方法需要一个额外的参数,所以你必须在声明界面中改变它的签名。 – 2009-12-19 10:11:29