Java中的缺省构造方法


如果你写的类中没有构造方法,则编译器会自动帮你创建一个缺省构造方法(无参的构造方法)。

但是,如果你已经定义了一个构造方法(无论是否有参数),编译器就不会帮你自动创建缺省构造方法。

有一个类:

  1. class Dog {  
  2.     private String name;  
  3.   
  4.     Dog(String name) {}  
  5. }  
这个类已经有一个有参的构造方法了,所以编译器就不会帮你自动创建无参的缺省构造方法了,如果你这样写:
  1. new Dog();  

编译器就会报错:没有找到匹配的构造器。这就好比,要是你没有提供任何构造器,编译器会认为:“你需要一个构造器,让我给你制造一个吧”,但假如你已写了一个构造器,编译器则会认为:“啊,你已写了一个构造器,所以你知道你在做什么;你是刻意省略了缺省构造器。”

相关内容