在java中使用默认的构造函数,即使存在参数化构造函数也是如此

Chi*_*abh 0 java constructor default-constructor

我只想在这里清除我的概念,所以我要问......

如果我为我的类定义一个显式的参数化构造函数,我是否仍然可以调用java编译器提供的默认构造函数(默认情况下为每个类提供)?

或者它是否导致在这种情况下导致编译时错误?请解释一下编译器调用的确切情况!

Jer*_*emy 11

当且仅当 没有提供构造函数时,编译器才会创建无参数构造函数.

JLS在第8章中说明:

如果类不包含构造函数声明,则隐式声明没有形式参数且没有throws子句的默认构造函数.

一个"捕获"是:

如果隐式声明了默认构造函数但是超类没有不带参数且没有throws子句的可访问构造函数(第6.6节),那么这是一个编译时错误.