为什么需要在java中创建默认构造函数?
当实例化单个类时未指定参数时,将使用默认构造函数,但对于子类和超类,我们需要创建默认构造函数!为什么? 注意:“默认构造函数”!=“零参数构造函数”。默认值(如果提供)是零参数构造函数,但如果显式编写零参数构造函数,则不是默认值 为什么需要在java中创建默认构造函数 它不是-这就是为什么它被称为默认构造函数。如果您没有为类编写任何构造函数,编译器就会提供它。默认构造函数不接受任何参数,如果类是子类,则调用超类上的零参数构造函数 这很好用(): 只有在以下情况下,才需要定义零参数构造函数:为什么需要在java中创建默认构造函数?,java,Java,当实例化单个类时未指定参数时,将使用默认构造函数,但对于子类和超类,我们需要创建默认构造函数!为什么? 注意:“默认构造函数”!=“零参数构造函数”。默认值(如果提供)是零参数构造函数,但如果显式编写零参数构造函数,则不是默认值 为什么需要在java中创建默认构造函数 它不是-这就是为什么它被称为默认构造函数。如果您没有为类编写任何构造函数,编译器就会提供它。默认构造函数不接受任何参数,如果类是子类,则调用超类上的零参数构造函数 这很好用(): 只有在以下情况下,才需要定义零参数构造函数: 您
- 您希望它具有与默认值不同的可访问性(默认情况下,它与类具有相同的可访问性)
- 您可以定义任何其他构造函数,但也希望有一个零参数构造函数。这是因为编译器仅在未定义构造函数时提供默认值(因为您可能不需要零参数构造函数)
这就是为什么您认为必须有一个默认构造函数,并且子类没有参数。这不是必需的,为什么您认为有必要?你可能想用代码来说明你的问题,这样我们就可以更好地理解发生了什么,然后向你解释。实际上我们不需要这样做。在实例化子类时,必须调用其中一个超类构造函数,因此如果该超类具有默认构造函数,则不必在该超类的子类中指定任何构造函数,因为不会自动调用任何参数构造函数。您可以举个例子吗?您可能想看看
class Base {
}
class Derived extends Base {
}
// ...
Derived d = new Derived();