ABC*_*123 1 java constructor this super
在下面的示例中,如果我创建一个名为example的类的构造函数,如下所示:
public class Example{
public Example(){
this.super();
}
}
Run Code Online (Sandbox Code Playgroud)
上面的方法不起作用,因为会javac Example.java通知以下编译错误:
Example.java:3: error: illegal qualifier; Object is not an inner class
this.super();
^
1 error
Run Code Online (Sandbox Code Playgroud)
但是,它不应该像this使用隐式声明那样工作,而不是通过使用super()显式声明this吗?
尽管通过调用来调用超类构造函数super(args)看起来像是常规方法调用,但是该语法实际上与典型方法调用不同,并且不受相同规则的约束。例如:
super(args)在构造函数中使用。super(args)用作构造函数的第一行。从这种意义上讲,这可能有助于将其视为方法调用而不是方法调用,而只是告诉Java初始化超类要做什么。
因为这不是典型的方法调用,所以常规方法调用的规则不适用于它。结果,您不能给它加上前缀this.以使接收器对象明确。Java语言设计人员没有使该语法合法的根本原因没有;他们只是选择不这样做。
| 归档时间: |
|
| 查看次数: |
127 次 |
| 最近记录: |