Java 调用超类的无参数构造函数
如果一个类不提供任何构造函数,编译器将提供一个默认构造函数,它反过来调用超类的no参数。为什么需要调用超类的无参数构造函数?来初始化该类的超(继承)部分Java 调用超类的无参数构造函数,java,Java,如果一个类不提供任何构造函数,编译器将提供一个默认构造函数,它反过来调用超类的no参数。为什么需要调用超类的无参数构造函数?来初始化该类的超(继承)部分 这样您也可以初始化超类属性。对象的构造函数只部分构造对象有意义吗?它是子类实例与其超类的“is-a”关系的一部分。如果SpottedFoo是Foo的子类(例如,每个SpottedFoo“is-a”Foo),则应调用Foo构造函数 否则,如果跳过了Foo构造函数执行的初始化(私有或非私有),则SpottedFoo无法保证它可以像Foo一样工作 这
这样您也可以初始化超类属性。对象的构造函数只部分构造对象有意义吗?它是子类实例与其超类的“is-a”关系的一部分。如果
SpottedFoo
是Foo
的子类(例如,每个SpottedFoo
“is-a”Foo
),则应调用Foo
构造函数
否则,如果跳过了Foo
构造函数执行的初始化(私有或非私有),则SpottedFoo
无法保证它可以像Foo
一样工作
这是实现继承契约的一部分:每个子类实例必须能够像其超类的任何其他成员一样工作。这就是你的第一句话不完全准确的原因。如果您自己不提供任何构造函数,编译器将只提供默认的无参数构造函数。一旦添加构造函数,无论它接受多少个参数,编译器都不会生成默认的无参数构造函数。@ivantod我同意你的看法……我已经更正了……另外,为了安全起见,如果超类没有无参数构造函数怎么办?