【发布时间】:2017-11-26 19:59:00
【问题描述】:
我是一名Java初学者,学习Java编译器规则如下:
- 如果该类没有超类,则将其扩展为 Object 类
- 如果类没有构造函数,添加一个默认的无参数构造函数
- 如果构造函数的第一行不是“super()”或“this()”,添加“super()”调用超类的默认构造函数。
我知道我们创建的所有对象都是从超类 Object 派生的。 我的问题是 Object 类中的构造函数在调用时做了什么?
编辑:我的问题是构造函数在 Object 类中做了什么?我知道子类默认调用超类的构造函数。
例如,我有以下代码(我显式扩展到 Object 并调用 super() 来说明编译器的作用)。我的问题是,对 super() 的调用是做什么的?
public class Person extends Object
{
private String name;
public Person(String n)
{
super();
this.name = n;
}
}
【问题讨论】:
-
确实没有理由用 Java 写
extends Object。 -
@M.Prokhorov 同意。上面的代码是讲师展示的,用来说明编译器是如何工作的。
-
另外,
If the class has no constructor, add a default no-parameter constructor也是错误的经验法则。 -
您可以参考this。希望这会对你有所帮助。
-
@M.Prokhorov 您能否详细说明为什么该规则是错误的?
标签: java inheritance constructor superclass