Java 中的缺省构造函数和继承

我有一个关于Java中默认构造函数和继承的问题。

通常,如果您编写一个类并且不包含任何构造函数,Java 会自动为您提供一个缺省构造函数(一个不带参数的构造函数),该构造函数使用一些缺省值(0、null 或 false)初始化该类的所有实例变量(如果有)。但是,如果您使用某些参数编写构造函数,并且不编写任何缺省构造函数,则 Java 不提供缺省构造函数。我的问题是:从其他类继承的类的情况如何 - 如果我编写一个构造函数,其中包含一些参数,但不包括默认构造函数,它们会继承超类的默认构造函数吗?


答案 1
  1. 如果不创建构造函数,则会自动创建默认的空构造函数

  2. 如果任何构造函数未显式调用 super 或此构造函数作为其第一个语句,则会自动添加对 super() 的调用

总是。


答案 2

构造函数不被继承。

此外,字段的初始化由虚拟机完成,而不是默认构造函数。默认构造函数仅调用超类的默认构造函数,而 Object 的默认构造函数为空。此设计的好处是无法访问未初始化的字段。