构造方法的定义
构造方法的语法格式与定义成员方法的语法格式相似,其语法格式如下:
[修饰符] 方法名 ([参数列表]){
// 方法体
}
上述语法格式所定义的构造方法需同时满足以下三个条件:
① 方法名与类名相同。
② 在方法名的前面没有返回值类型的声明。
③ 在方法中不能使用return语句返回一个值,但是可以单独写return语句来作为方法的结束。
了解了构造方法的定义语法后,接下来通过一个案例来演示如何在类中定义构造方法,如文件1所示。
文件1 Example08.java
1 class Person {
2 // 类的构造方法
3 public Person() {
4 System.out.println("调用了无参的构造方法");
5 }
6 }
7 public class Example08 {
8 public static void main(String[] args) {
9 Person p = new Person(); // 实例化Person 对象
10 }
11 }
运行结果如图1所示。
图1 运行结果
文件1中,Person类中定义了一个无参的构造方法Person()。从图1可以看出,Person类中无参的构造方法被调用了。这是因为第9行代码在通过“new Person()”实例化Person对象时会自动调用该类的构造方法。
在一个类中除了可以定义无参的构造方法外,还可以定义有参的构造方法,通过有参的构造方法就可以实现对属性的赋值。接下来对文件1进行改写,改写后的代码如文件2所示。
文件1 Example09.java
1 class Person {
2 // 声明int类型的变量age
3 int age;
4 // 定义有参构造方法
5 public Person(int a) {
6 age = a; //为age属性赋值
7 }
8 // 定义 speak() 方法
9 public void speak() {
10 System.out.println("我今年" + age + "岁了!");
11 }
12 }
13 public class Example09 {
14 public static void main(String[] args) {
15 Person p = new Person(18); // 实例化Person对象
16 p.speak();
17 }
18 }
运行结果如图2所示。
图2 运行结果
文件2中,Person类中定义了一个有参的构造方法Person(int a),第15行代码中的“new Person(18);”会调用有参的构造方法来实例化一个Person对象,并传入参数18,对age属性进行赋值。从图2可以看出,Person对象在调用speak()方法时,其age属性已经被赋值为18。