Java接口和inheritance

如果我们有:

public interface Foo{} public class Bar implements Foo{...} 

是否有区别:

 public class BarBar extends Bar implements Foo{..} 

 public class BarBar extends Bar{..} 

我看到很多像这样的代码,它总是让我感到困惑。 BarBar需要实现Foo吗? 我的意思是,因为它延伸Bar开始不是已经存在吗? 我想我的问题是,在BarBar中实现Foo目的是什么?

主要区别是15个完全不必要的字符:-)

当您的父类实现某个接口时,所有接口方法都由它实现,或者(显式或隐式)定义为抽象。 无论哪种方式,扩展父类的类都会inheritance所有这些方法,并隐式实现原始接口。

没有区别。 额外的implements是无害的,但没用。

可以说第二个“扩展X实现Y”是冗长的,但额外的几个字符是一个很好的提醒。 看看ArrayList等我很确定他们使用长forms – 扩展AbstrsvtList实现List。

最后,大多数开发人员都是快速打字机,因此额外的几个字符几乎没有时间打字。 为什么有这么多关于打字的目标应该是关于清晰度和消除模糊性而不是陈述所有事实……

没有理由实现foo。 因为bar是foo barbar也是如此。

好吧,我同意所有关于这个问题的评论,它真的是不必要的实现,虽然我可能会这样做,以防我想要覆盖关于foo实现的barbar的行为,所以我可以这样做来强制覆盖那些方法并使IDE自动为我实现!!

但它与覆盖barbar中的那些function同样重要