如果你写的类中没有构造方法,则编译器会自动帮你创建一个缺省构造方法(无参的构造方法)。
但是,如果你已经定义了一个构造方法(无论是否有参数),编译器就不会帮你自动创建缺省构造方法。
有一个类:
class Dog {
private String name;
Dog(String name) {}
}
这个类已经有一个有参的构造方法了,所以编译器就不会帮你自动创建无参的缺省构造方法了,如果你这样写:
new Dog();
编译器就会报错:没有找到匹配的构造器。这就好比,要是你没有提供任何构造器,编译器会认为:“你需要一个构造器,让我给你制造一个吧”,但假如你已写了一个构造器,编译器则会认为:“啊,你已写了一个构造器,所以你知道你在做什么;你是刻意省略了缺省构造器。”