gpt4 book ai didi

java - 为什么 this.super() 在 Java 中不可能?

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

在下面的例子中,如果我像这样创建一个名为 example 的类的构造函数:

public class Example{

public Example(){
this.super();
}

}

以上将不起作用,因为 javac Example.java 通知以下编译错误:

Example.java:3: error: illegal qualifier; Object is not an inner class
this.super();
^
1 error

但它不应该像使用 super() 隐式声明 this 那样工作吗,我们使用 this 显式声明它?

最佳答案

虽然通过调用 super(args) 来调用父类(super class)构造函数看起来像是常规方法调用,但该语法实际上与典型方法调用不同,并且不受相同规则的约束。例如:

  1. 您只能在构造函数中使用 super(args)
  2. 您只能使用 super(args) 作为构造函数的第一行。

从这个意义上说,这可能有助于将其视为不是方法调用,而只是作为一种告诉 Java 您想要做什么来初始化父类(super class)的方式。

因为这不是典型的方法调用,所以常规方法调用的规则不适用于它。因此,您不能在它前面加上 this. 来使接收者对象显式化。 Java 语言设计者没有使这种语法合法化的根本原因。他们只是选择不这样做。

关于java - 为什么 this.super() 在 Java 中不可能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56708665/

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