Discuss / Java / 为什么 Java 中 如果我们自定义了一个构造方法,那么,编译器就不再自动创建默认构造方法?

为什么 Java 中 如果我们自定义了一个构造方法,那么,编译器就不再自动创建默认构造方法?

Topic source

🌙

#1 Created at ... [Delete] [Delete and Lock User]
这是因为在Java中,如果我们手动创建了一个构造方法,编译器就会认为我们已经指定了类的初始化方式,因此默认构造方法就不再需要了。此外,手动创建构造方法也可以更好地控制类的实例化过程,以便更好地满足我们的需求。

🌙

#2 Created at ... [Delete] [Delete and Lock User]

我觉得是为了 节省开销?

保持热爱

#3 Created at ... [Delete] [Delete and Lock User]

你都复制过来了,没自己理解一遍吗?不是说了,如果我们手动创建了一个构造器,编译器就会认为我们 知道 自己在做什么,不再需要默认的初始化方式,不再提供无参构造器以便更好的满足需求

🌙

#4 Created at ... [Delete] [Delete and Lock User]

我自己都不知道,自己在做什么?他编译器,又怎么知道我在做什么?

查了一下,说是,防止和自己写的,冲突了

为什么Java写个带参的构造方法,那无参的就必须再显示写一个_pojo为什么要把有参构造和无参构造都要写出来_道里听音的博客-CSDN博客

我觉得不够智能

如果我们自定义了一个构造方法,那么,编译器就不再自动创建默认构造方法:

原因是,当你为类编写了一个有参构造函数时,Java不会再自动提供无参构造函数。这是 Java 编程语言的设计选择之一。而如果你想要有无参构造函数,你需要显式地自己写一个。

这样设计的原因之一是为了让程序员能够更加明确地控制他们的类,避免不必要的自动生成。例如,如果一个类是设计用于创建对象时需要一些必要信息,而没有无参构造函数的存在可以防止程序员误以为可以在没有必要信息的情况下创建对象。

另外,这也有助于增强代码的可读性。当其他开发者查看你的代码时,他们可以清楚地看到哪些构造函数是有意为之,哪些是自动生成的。

正因如此,Java之所以设计为没有显式提供有参构造函数的情况下不再自动提供无参构造函数,是为了让程序员更加明确地控制类的构造函数,以及为了提高代码的可读性和可维护性。

其实,没啥好纠结的,自动 帮你生成一个也不是不可以,人家这么设计肯定有他的原因,初学对乱七八糟的事情,过于好奇,并不是什么好事情。


  • 1

Reply