JAVA_ 初始化与清理_默认构造器_搬砖自Think in Java

本篇介绍下Java中的默认构造器,接上一篇文章。

 

    如前所述,默认构造器(又名“无参”构造器)是没有形式参数的——它的作用是创建一个“默认对象”。如果你写的类没有构造器,则编译器会自动帮你创建一个默认构造器。例如:

//: 初始化之默认构造器

class Bird {}

public class DefaultConstructor {
	public static void main(String[] args) {
		Bird b = new Bird(); // 这里就调用了Bird类的默认构造器
	}
}

    在上面的例子代码中,表达式new Bird();这一行创建了一个新对象,并调用其默认构造器——即使你没有明确定义它。没有它(构造器)的话,就没有方法可以调用,就无法创建对象。但是,如果已经定义 了一个构造器(无论是否有参数),编译器就不会帮你自动创建默认构造器了:

//: 初始化之默认构造器

class Bird {
	Bird (int i) {}
	Bird (double d) {}
}

public class DefaultConstructor {
	public static void main(String[] args) {
		// Bird b = new Bird(); // 这里就调用了Bird类的默认构造器
		Bird b = new Bird(1);
		Bird b = new Bird(1.0);
	}
}

   :要是在创建对象的时候使用new Bird();这一句,编译器就会报错;没有找到匹配的构造器

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

    

 

 

你可能感兴趣的:(java,初始化与清理,默认构造器)