Java 接口(interface) : Inheriting, 覆盖和重载方法

标签 java interface overriding overloading

在 Ken Arnold、James Gosling、David Holmes 的“THE Java™ Programming Language, Fourth Edition”中提到:

段落:(4.3.2) “类似地,如果一个接口(interface)继承了多个具有相同签名的方法,或者如果一个类实现了包含具有相同签名的方法的不同接口(interface),则只有一个这样的方法。这个方法的实现最终由实现接口(interface)的类,那里没有歧义。如果方法具有相同的签名但返回类型不同,则其中一个返回类型必须是所有其他返回类型的子类型,否则会发生编译时错误。实现必须定义一个返回该公共(public)子类型的方法。”

任何人都可以给我一些示例代码来证明上述段落的观点吗?

我尝试编写代码并测试提到的内容,但出现编译时错误 子接口(interface)隐藏了基接口(interface)方法,只能实现子接口(interface)方法。

提前致谢。 -阿伦

最佳答案

interface A {
    void method();
    Object returnMethod();
}
interface B {
    void method();
    B returnMethod();
}

class Impl implements A,B 
{
    void method() { }
    B returnMethod() { }
}

如您所见,Impl.method() 实现了 A.method()B.method(),而 Impl.returnMethod() 返回一个 B,它是 Object 的子对象,从而实现了 A.returnMethod()的契约也是。后者是否需要一个不是 B.returnMethod() 返回类型的父级的返回类型,这将是一个 comile 错误,因为 Impl 中不存在这样的实现>.

关于Java 接口(interface) : Inheriting, 覆盖和重载方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/877587/

相关文章:

Java : How to create an object in a method and use it throughout the class?

java - 在构造函数中调用可重写的方法是不好的。有异常(exception)吗?

python - 调用子方法时如何强制执行强制父方法调用?

java - Java中可以识别光标所在的字符串吗?

java - 将我的程序转换为 JFrame

ios - 知道何时在 Apple Watch 模态界面 Controller 中单击取消按钮

go - 如何通过组合不同包的接口(interface)来创建接口(interface)?

java - 构造函数中可覆盖的方法调用有什么问题?

java - 数到 x 个数字然后在 Java 中停止?

java - 流式传输字节数组时出现 Servlet IOException