以下代码(该类的缩写版本)是我在 Java 视频教程中看到的。
public class Address {
private String firstName;
private String lastName;
public Address() {
super();
}
public Address(String firstName, String lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
...
}
Run Code Online (Sandbox Code Playgroud)
那里显示的类没有extend关键字。然而,super()在构造函数中使用时不带参数。
它调用了Object类的构造函数?我对吗?
但为什么?
接到这个电话的原因是什么super()?
当您创建类的实例时,将调用超类的构造函数。如果您的类显式扩展了某些内容,则有两种选择:
调用不带参数的 super() 基本上意味着您调用默认构造函数。这不是必需的,因为即使您没有显式执行它也会被调用。
由于java中的所有对象都隐式扩展了Object,因此每次创建该类的实例时都会调用Object的默认构造函数。super() 只是让它变得明确。但是,为什么我们要为已经很清楚的事情添加明确性呢?
此外,当您使用代码生成工具(例如 Eclipse)时,IDE 有时会添加它。
您可以在一本 OCA 准备书中阅读关于类/超类构造者如何工作的非常好的描述:https://www.amazon.com/OCA-Certified-Associate-Programmer-1Z0-808/dp/1118957407
| 归档时间: |
|
| 查看次数: |
2609 次 |
| 最近记录: |