Java 中的接口语法



下面的代码编译:

interface A {
    void foo();
}
interface B extends A {
    void bar();
}
class FooBar implements A, B {
    ...
}

只说class FooBar implements B会更干净.除了清晰之外,还有什么理由这样做吗?或者,如果我使用示例代码中显示的模式,我可能会遇到一些麻烦。

对于编译器来说,它没有区别。

对于人类读者来说,在某些情况下,它可以使代码更容易理解。当你的接口名称是AnimalMammal时,声明两者都是多余的,因为每个人都知道哺乳动物是动物。但是,如果接口不是那么密切相关,例如 DataTransferObjectSerializable ,则显式列出两者会很有用。

显式声明FooBar实现A是完全多余的,并且可以配置现代 IDE 来警告这种冗余。

如果从B扩展A的名称中看不出来,则以这种方式声明FooBar可能会使其更容易理解,但通常这只是意味着您需要重新考虑BA之间的关系。

最新更新