【发布时间】:2017-06-04 09:15:46
【问题描述】:
我在 Java Video-Tutorial 中看到的以下代码(类的简化版本)。
public class Address {
private String firstName;
private String lastName;
public Address() {
super();
}
public Address(String firstName, String lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
...
}
那里显示的类没有extend 关键字。尽管如此,super() 在没有参数的构造函数中使用。
它调用了Object类的构造函数?我说的对吗?
但是为什么呢?
拨打super()的原因是什么?
【问题讨论】:
-
你是对的,没有任何理由。无论如何都会调用
Object类的构造函数。 -
无论该类是否具有 Object 以外的超类,显式调用
super()始终是多余的,因为如果您不这样做,编译器会添加一个,作为对所有对象的第一条指令构造函数。发布的代码不一致,因为它在一个构造函数上使用了 super(),而在另一个构造函数中却没有。在视频教程中发现那种丑陋的代码我并不感到惊讶。 Youtube 适用于笑笑猫。免费视频教程大部分时间质量都很差。 -
如果没有明确指定,每个类都有一个超类:Object
-
很可能,youtube 教程的作者使用了一些默认设置来生成 IDE 代码。通常 super() 只是被省略。
-
@dvelopp 是的。我想这就是它发生在那里的真正原因。就像我想的那样,答案证实:没有更深层的原因。
标签: java inheritance