从基类继承的接口是否应该在子类中显式实现?

2022-09-03 17:43:03

我的问题是,如果一个通过扩展已经实现它的类隐式实现的接口,应该由该类显式实现,如果该类想要公布它的事实,它履行了该接口的协定。

例如,如果要编写一个类,则满足接口的协定。您实现了这一点,扩展了已经实现接口的类。你是否明确声明,你实现了List?java.util.Listjava.util.AbstractListList

public class MyList extends AbstractList implements List

还是通过使用隐式方式保存键入?

public class MyList extends AbstractList

哪种方式被认为是更好的风格?您有什么理由更喜欢这种或那种方式?在哪种情况下,您更喜欢方式1或方式2?


答案 1

避免冗余。使用方法 2.

使用@Override进行覆盖。


答案 2

这不是一个“风格”问题。如果您正在扩展已经实现 List 的 AbstractList,则不需要显式实现 List。

这不仅仅是保存打字的问题。由于额外的“实现列表”是多余的,有人可能会花一些时间试图弄清楚它为什么存在。你基本上是在写一个已经是语言一部分的保证。