下面的代码编译:
interface A {
void foo();
}
interface B extends A {
void bar();
}
class FooBar implements A, B {
...
}
只说class FooBar implements B
会更干净.除了清晰之外,还有什么理由这样做吗?或者,如果我使用示例代码中显示的模式,我可能会遇到一些麻烦。
对于编译器来说,它没有区别。
对于人类读者来说,在某些情况下,它可以使代码更容易理解。当你的接口名称是Animal
和Mammal
时,声明两者都是多余的,因为每个人都知道哺乳动物是动物。但是,如果接口不是那么密切相关,例如 DataTransferObject
和 Serializable
,则显式列出两者会很有用。
显式声明FooBar
实现A
是完全多余的,并且可以配置现代 IDE 来警告这种冗余。
如果从B
扩展A
的名称中看不出来,则以这种方式声明FooBar
可能会使其更容易理解,但通常这只是意味着您需要重新考虑B
和A
之间的关系。