gpt4 book ai didi

java - Java 中的 super 关键字给出编译错误

转载 作者:行者123 更新时间:2023-11-30 09:45:29 25 4
gpt4 key购买 nike

class That {
protected String nm() {
return "That";
}
}

class More extends That {
protected String nm() {
return "More";
}

protected void printNM() {
That sref = super;

System.out.println("this.nm() = " + this.nm());
System.out.println("sref.nm() = " + sref.nm());
System.out.println("super.nm() = " + super.nm());
}

public static void main(String[] args) {
new More().printNM();
}
}

尝试编译 More.java 时出现 4 个错误:

More.java:7: error: '.' expected
That sref = super;
^
More.java:7: error: ';' expected
That sref = super;
^
More.java:9: error: illegal start of expression
System.out.println("this.nm() = " + this.nm());
^
More.java:9: error: ';' expected
System.out.println("this.nm() = " + this.nm());
^
4 errors

代码有问题吗? (摘自《Java 编程语言》第 62 页)

编辑:从书中:"这里是 printNM 的输出:

this.nm() = More
sref.nm() = More
super.nm() = That

因此,要么他们使用了一些已弃用的 super 功能(我认为这是本书的第一版),要么是打字错误,也许他们的意思是:“那个 sref = new More()”

最佳答案

你不能那样使用super。在构造函数中使用它,带括号 - super()super.method() (或在泛型中)

在您的情况下,此关键字不应该存在。如果你想要一个父类(super class)的实例,只需

That sref = new That();

关于java - Java 中的 super 关键字给出编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7504830/

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