在以对象为导向的编程的领域中,具有多个接口
了解此概念,让我们考虑以下示例:
在这种情况下,测试同时实现A和B,并且两个接口都定义了具有相同签名的名为F()的方法。通过在测试中覆盖此方法,该类有效地覆盖了两个接口的F()方法,即使仅存在一个@Override注释。
这是因为Java的继承规则决定了具有相同签名的方法,被认为是“超级等值”。结果,编译器选择了它遇到的第一个覆盖方法,无论其接口来源如何。此外,如果冲突的方法具有不同的返回类型,则可能会出现不相容性。在这种情况下,编译器将报告一个错误,因为不可能具有两种具有相同签名的方法,但在同一类中都不同。
为了说明这一点,让我们将示例修改为以下内容:interface A { int f(); } interface B { int f(); } class Test implements A, B { @Override public int f() { return 0; } }结论是,当类实现多个以上等效方法实现多个接口时,编译器识别仅实现的方法,并且对所有接口的 @override notation都适用于所有接口。但是,方法签名之间的不兼容会导致编译错误。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3