gpt4 book ai didi

java - 为什么在使用从类和接口(interface)继承的方法重载函数时会出现这种歧义错误?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:55:54 26 4
gpt4 key购买 nike

我创建了一个名为 parent 的父类,其中包含一个 show() 方法和一个接口(interface) my 具有相同的默认 show() 方法但主体不同。然后我创建了一个继承接口(interface) my 并实现它的子类。

class Parent
{
public void show()
{
System.out.println("parent");
}
}

interface Interface
{
default void show()
{
System.out.println("interface");
}
}

class Child extends Parent implements Interface
{
public static void main(String[] args)
{
Child child = new Child();
child.show();
}
}

如果您在 jdk 8 中运行它,您将看到输出是 parent 父字符串。

问题是扩展和继承实现相同方法的基类和接口(interface)不应该是歧义错误吗?

最佳答案

当接口(interface)中有方法 show() 时,实现该接口(interface)的类必须覆盖它并提供自己的实现。但这里它有默认实现。

这里类 Child 通过继承从 Parent 获取方法 show()。所以接口(interface)中的方法就像在类 Child 中重写。

您不应将 show() 视为属于类 Parent,而应将其视为存在于类 Child

编辑:即使您将 child 对象转换为类型 Interface

Interface interface = (Interface)child;

interface.show() 会调用 Child 类中 show() 的实现,这里是继承的 show( ) 来自 Parent (因此将打印 parent)

关于java - 为什么在使用从类和接口(interface)继承的方法重载函数时会出现这种歧义错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34787035/

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