Java的构造器保证了成员变量得到恰当的初始化。 用一个例子来解释这句话,假设我是Person类的设计者;我需要别人在创建Person对象的时候,赋予这个对象性别、体重,否则就不可以创建Person对象;那么我如何保证这件事呢?
public class Person {
String gender;
float weight;
}
我用构造器保证。
public class Person {
String gender;
float weight;
public Person(String gender, float weight) {
this.gender = gender;
this.weight = weight;
}
}
我在设计这个类的时候,定义一个带有这两个参数的构造器;你在new这个对象的时候,只能通过这个构造器创建;只要你想创建Person对象,那么你一定没法忽略对这两个成员变量的初始化,否则你就没法创建。
接下来我们来具体谈谈Java的构造器特征:
- 1.构造器的名字要与类名完全一致。
- 2.构造器不定义返回数据类型,这与定义返回数据类型为void是有区别的。
这两条应该算是构造器的基本特征,知道这两个你就可以自己定义类的构造器了。
进阶:
-
1.如果我们不定义构造器,编译器会给我们一个默认的无参构造器。
-
2.如果我们定义了一个构造器,编译器将不会再给我们提供默认构造器。
-
3.可以通过方法重载定义多个不同参数的构造器,使得别人可以通过多种方式创建这个类。
public class Person { String gender; float weight; public Person() { } public Person(String gender) { this.gender = gender; } public Person(String gender, float weight) { this.gender = gender; this.weight = weight; } }
有的时候通过构造器在创建对象的时候给成员变量赋值,相比于使用Set方法,本身也是一种很方便的赋值方式。