我是Java的新手,想知道“当类包含用户定义的参数化构造函数时,为什么编译器未提供默认构造函数?”
答案 0 :(得分:5)
当作者决定不提供任何构造函数时,编译器添加该默认构造函数非常好。 很明显用户并不关心该类的“如何”对象的创建,他接受了“默认”的加入。
但是,一旦作者写下带有参数的构造函数,很明显他就假定他的一个构造函数被使用了。
直接推理:假设您的类具有多个字段,并且用户编写的构造函数将所有字段初始化。编译器生成的默认构造函数应如何处理这些字段?正如评论中指出的那样:将它们保留在null
或0处不是一个好主意。