下列说法正确的有?( )
A. class 中的 constructor 不可省略
B. constructor 在一个对象被 new 时执行
C. constructor 必须与 class 同名,但方法不能与 class 同名
D. 一个 class 只能定义一个 constructor
解析:
第1个选项:当我们在一个 Java 类中没有编写任何构造方法的情况下,Java 会默认为该类提供一个无参构造方法,所以该选项是错误的。但是只要我们编写了任意一个构造方法,默认的无参构造方法就不再提供了。因此,大多数情况下,我们都建议在编写了带参构造方法之后,一定要手动定义一个无参构造方法,它不只是为该类使用,更多是为了给它的子类使用。但那也只是建议,如果没有子类或使用不到时就不是必须的。
第2个选项:在 new 一个对象的时候,new 关键字后面调用的就是对应类的对应构造方法。所以该选项是正确的。
// 创建 Student 类的对象
// 调用 Student 类的无参构造方法
new Student();
第3个选项:构造方法名的确是必须和类名相同,所以该选项前半段是正确的。但在 Java 中并没有限制普通方法名不能与类名相同,只能说从代码规范上不推荐普通方法名与类名相同。所以该选项最终是错误的。
第4个选项:且不说构造方法是支持重载的,至少还有无参构造方法和带参构造方法之分。所以该选项是错误的。