为啥当类包含任何参数化构造函数时编译器不提供默认构造函数? [复制]

Posted

技术标签:

【中文标题】为啥当类包含任何参数化构造函数时编译器不提供默认构造函数? [复制]【英文标题】:why compiler doesn’t provide the default constructor when a class contains any parameterized constructor? [duplicate]为什么当类包含任何参数化构造函数时编译器不提供默认构造函数? [复制] 【发布时间】:2014-04-05 16:21:12 【问题描述】:

为什么当类包含任何参数化构造函数时,java编译器不提供默认构造函数。

【问题讨论】:

因为这意味着每个类都可以在没有参数化的情况下构造,这是不可取的。类可能依赖于其他对象和原语才能工作。 【参考方案1】:

因为如果你明确定义了一个构造函数,那么你就是在说一个类实例应该如何被实例化。您希望它被严格定义,并且默认构造函数可以解决这个问题。

为了方便起见,Java 提供了一个默认构造函数。但是如果你开始定义你自己的,它就没有任何意义并且会被删除。

【讨论】:

以上是关于为啥当类包含任何参数化构造函数时编译器不提供默认构造函数? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

为啥 C++ 构造函数在继承中需要默认参数?

如果类具有参数化构造函数,为啥Java不提供默认构造函数? [复制]

两个特别的构造函数

构造函数和析构函数?它们有什么作用? 面向对象的特征有哪些?

golang函数中的参数为啥不支持默认值

子类为啥要调用父类的构造函数