gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:11:14 24 4
gpt4 key购买 nike

在 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com