java中的抽象类和接口最佳实践

Joh*_*ick 4 java oop inheritance abstract-class interface

所以你有一个接口和一个抽象类,它实现了接口中方法的一个子集.你还有一些继承抽象类的类,并给出了抽象类没有给出的方法的实现.

那么这里最好的做法是什么?我在谈论的问题如下:

1)抽象类应该实现接口还是它的子类?应该每节课吗?在我看来,只是抽象类应该.当然,所有类都可以实现接口,但这似乎是多余的,因为抽象的子节点将"继承"接口,因为它们扩展了抽象类.

2)鉴于抽象类实现了接口的一部分,它是否还应该为它没有实现的方法声明抽象方法?在我看来,这是正确的,但在某种程度上,这似乎是多余的,因为抽象的孩子需要实现这些方法才能编译.

那么你对最佳实践的论点是什么?问题归结为:我们有一个接口定义了我们想要某些类做什么,我们在接口中有一个定义常见行为的方法子集,我们有几种不同的定义方法非常见的行为.什么是最好的解决方法?

Ita*_*man 9

应该帮助你的原则是干嘛:不要重复自己(http://en.wikipedia.org/wiki/Don%27t_repeat_yourself).

在这种情况下,DRY意味着您不应该做不必要的工作.

因此,对于第一个问题,抽象类应该实现接口,因为它可以避免在每个具体类中重复"implements X"子句.

至于第二个问题,重复实现它的抽象类中的接口方法是没有意义的.这是多余的工作.此外,当接口演变/更改时,您需要更改抽象类中的对应(抽象)方法,这是一个令人头疼的问题.在某些时候,你会错过更新一些方法,具体类将需要实现这些是徒劳的.