Java接口与继承

Java接口与继承,java,interface,Java,Interface,如果我们有: public interface Foo{} public class Bar implements Foo{...} 以下两者之间是否有区别: public class BarBar extends Bar implements Foo{..} 及 我看到很多这样的代码,它总是让我困惑。BarBar是否需要实施Foo?我的意思是,既然它一开始就扩展了Bar,那不是已经存在了吗?我想我的问题是,在BarBar中实现Foo的目的是什么?主要区别是15个完全不必要的字符:-) 当

如果我们有:

public interface Foo{}

public class Bar implements Foo{...}
以下两者之间是否有区别:

public class BarBar extends Bar implements Foo{..}


我看到很多这样的代码,它总是让我困惑。
BarBar
是否需要实施
Foo
?我的意思是,既然它一开始就扩展了
Bar
,那不是已经存在了吗?我想我的问题是,在
BarBar
中实现
Foo
的目的是什么?

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


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

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

没有理由实现foo。因为bar是一个foo,barbar也会是。

我同意所有关于这个问题的评论,它确实没有必要实现,尽管我可能会这样做,以防我想要覆盖barbar关于foo实现的行为,所以我可能会这样做,强制覆盖那些方法,并使IDE自动为我实现它


但这与在barbar中覆盖这些功能是一样的。可以说,第二个“extends X implements Y”很冗长,但额外的几个字符是一个很好的提醒。看看ArrayList等,我很确定他们使用的是长格式扩展的AbstrsvtList实现列表

最后,大多数开发人员都是快速打字的人,因此额外的几个字符几乎没有时间打字。为什么这么多的目标都是为了清晰、消除歧义,而不是陈述所有的事实

public class BarBar extends Bar{..}