默认构造函数是在没有显式提供构造函数时,系统自动添加的无参构造函数;而当无参构造函数显式提供时,系统不会再自动添加,此时就不存在默认的构造函数。因此,这句话是对的。
public class Client { public static void main(String[] args) { // 声明一个Cls3 Cls3 cls3; // 获取Cls3 对象有两种方式 { cls3 = new Cls3(); // 使用无参构造对象 cls3 = new Cls3("有参"); // 使用有参构造对象 } // 声明一个Cls2 C...
也就是说当一个类你没有给他构造函数,则编译器会自动补上一个无参的,若有的话就不会,你需要显示将此无参的构造函数写出来。另一个问题:无参的构造函数,只是为了比较好的构造类(new),具体情况要根据你的类是如何设计的,呵呵。
public class Person { private String name;public Person(String name) { this.name = name;} 那么这里就已经隐含了一个无参数的构造函数的存在,实际上它的实现是这样的:public Person() { this(null);} 这就是为什么你自己定义了有参构造函数之后,就不一定非得再定义一个无参构造函数的原因。
Test {int n;Test() {}}每个类都必须至少有一个构造方法,不写时便是上述原因编译器自动给加的,不是它没有构造方法。而带参数的构造方法或者说参数化的构造方法,就是指构造方法的参数不是空的,比如:class Test {int n;Test(int n) { this.n = n; }}默认的是什么也不带的。