Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 调用超类的无参数构造函数_Java - Fatal编程技术网

Java 调用超类的无参数构造函数

Java 调用超类的无参数构造函数,java,Java,如果一个类不提供任何构造函数,编译器将提供一个默认构造函数,它反过来调用超类的no参数。为什么需要调用超类的无参数构造函数?来初始化该类的超(继承)部分 这样您也可以初始化超类属性。对象的构造函数只部分构造对象有意义吗?它是子类实例与其超类的“is-a”关系的一部分。如果SpottedFoo是Foo的子类(例如,每个SpottedFoo“is-a”Foo),则应调用Foo构造函数 否则,如果跳过了Foo构造函数执行的初始化(私有或非私有),则SpottedFoo无法保证它可以像Foo一样工作 这

如果一个类不提供任何构造函数,编译器将提供一个默认构造函数,它反过来调用超类的no参数。为什么需要调用超类的无参数构造函数?

来初始化该类的超(继承)部分


这样您也可以初始化超类属性。

对象的构造函数只部分构造对象有意义吗?

它是子类实例与其超类的“is-a”关系的一部分。如果
SpottedFoo
Foo
的子类(例如,每个
SpottedFoo
“is-a”
Foo
),则应调用
Foo
构造函数

否则,如果跳过了
Foo
构造函数执行的初始化(私有或非私有),则
SpottedFoo
无法保证它可以像
Foo
一样工作


这是实现继承契约的一部分:每个子类实例必须能够像其超类的任何其他成员一样工作。这就是你的第一句话不完全准确的原因。如果您自己不提供任何构造函数,编译器将只提供默认的无参数构造函数。一旦添加构造函数,无论它接受多少个参数,编译器都不会生成默认的无参数构造函数。@ivantod我同意你的看法……我已经更正了……另外,为了安全起见,如果超类没有无参数构造函数怎么办?