我们知道如果在一个类中没有声明一个构造函数,那么编译器会隐式的帮我们实现一个无参的构造函数,但如果我们一旦一个构造函数,不管带不带参数,那么编译器都不会提供默认的构造函数,所以这么做的原因是为什么呢?
有一个原因就是,如果我们给所有的类都自动实现一个无参的构造函数,就可能出现问题,会打破类的设计原则。 比如说,考虑这个Scanner类,他有几个构造函数,你可以通过这几个构造函数,声明你想要读取数据的来源,如果编译器增加了无参的构造函数,那么你不给定读取的数据源,就会报错,程序无法执行,因为我们不能不指定一个数据源就让他去读取数据。