gpt4 book ai didi

Java 覆盖方法不起作用

转载 作者:行者123 更新时间:2023-11-29 05:11:48 26 4
gpt4 key购买 nike

谢谢大家。事实上,有人为那个打乱了正确行为的类(class)打了补丁。最后我通过检查类加载器找到了这个。原谅我:)

这里,public class Son extends public class Parent extends public class GrandParent

在 Parent 中,此方法覆盖 GrandParent:

@Override
public String getSomething() {
return "blabla";
}

在 Son 中,同样的方法覆盖了 Parent:

@Override
public String getSomething() {
return null;
}

奇怪的是,当我运行声明为 GrandParent 并构造为 Son 的对象的 getSomething() 时,它会进入 Parent 的代码并返回“blabla”而不是 null。

有没有人见过这个问题?任何人都可以对此做出解释吗?谢谢。

最佳答案

如果您尝试这个简单的代码:

public class GrandParent
{
public String f() {
return "grand parent";
}
}

public class Parent extends GrandParent
{
@Override public String f() {
return "parent";
}
}

public class Son extends Parent
{
@Override public String f() {
return "son";
}
}

public class Test
{
public static void main(String[] args) {
GrandParent p = new Son();
System.out.println(p.f());
}
}

您会看到打印出的字符串是"son"。您在代码中做错了什么。

关于Java 覆盖方法不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28190372/

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