java - 为什么在 java 中键入带参数的构造函数时不提供默认构造函数?

标签 java oop

在 java 中,如果我们为一个类键入一个带参数的构造函数,我们就不能调用它的默认无参数构造函数。我知道这是因为如果我们键入任何带参数的构造函数,编译器不会提供默认的无参数构造函数。但是我的问题是这样设计的原因是什么?

最佳答案

如果您为构造函数提供参数,则假定该对象将以有效状态创建。

如果默认公开一个无参数构造函数(并且类的创建者没有采取防御措施),某人可能会无意中创建一个无效对象——一个没有足够信息的对象是正确的。

通过强制我们提供一个无参数的构造函数,Java 强制我们明确表明可以创建一个没有那些初始值/状态的对象。

简而言之:Java 试图将我们从 self 中拯救出来,因为我们草率而健忘。

关于java - 为什么在 java 中键入带参数的构造函数时不提供默认构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8589997/

相关文章:

java - Android 从位图到文件对象

java - 使用Servlet在带有服务器的android中登录应用程序

java - 如果提供了字段名称,如何一般填充对象?

python - python中的多个构造函数,使用继承

c++ - C++中重写虚方法

python - 在 Python 中,什么时候应该使用元类?

java - 继承是否与依赖倒置原则相矛盾

java - Netty 客户端连接操作的哪一部分应该共享?

java - TabLayout 中的选项卡没有填满整个 ActionBar

java - OpenCV FeatureDetector 从文件读取后似乎没有设置各种属性