[javase學習筆記]-7.3 建構函式的重載
這一節我們來學習一下建構函式的重載。
說到重載,我們在函數那一章已經學習過了,為了更好的理解建構函式的重載,我們先要弄明白一個問題:
那就是什麼時候定義建構函式呢?
在描述事物時,該事物已存在就具備一些內容,這些內容都定義在建構函式中。
我們來看例子:
class Person{private String name;private int age;Person(){System.out.println("person run");}public void speak(){System.out.println(name+":"+age);}}我們來測試一下:
class ConsDemo{public static void main(String[] args) {Person p = new Person();//此時調用了建構函式p.speak();}}
結果:
此時列印結果為null和0,就是說我們從來沒有對成員變數賦過值。
那麼當我們想要在建立Person對象時成員變數就有值,可以定義這樣的建構函式:
class Person{private String name;private int age;Person()//建構函式,分別為成員變數name和age賦值{name = "baby";age = 1;System.out.println("person run");}public void speak(){System.out.println(name+":"+age);}}測試
class ConsDemo{public static void main(String[] args) {Person p = new Person();p.speak();}}我們看到結果:
那麼如果我們要使一個Person對象一出生就有名字,那麼我們可以定義如下一個建構函式:<喎?http://www.bkjia.com/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+PHByZSBjbGFzcz0="brush:java;">class Person{private String name;private int age;Person()//建構函式,分別為成員變數name和age賦固定的值{name = "baby";age = 1;System.out.println("person run");}Person(String n)//建構函式,有一個初始name參數{name = n;}public void speak(){System.out.println(name+":"+age);}}
我們來測試一下:
class ConsDemo{public static void main(String[] args) {Person p = new Person();p.speak();Person p1 = new Person("旺財");p1.speak();}}
看一下結果:
同理,我們可以定義另外一個建構函式,把name和age兩個參數同時初始化
class Person{private String name;private int age;Person()//建構函式,分別為成員變數name和age賦固定的值{name = "baby";age = 1;System.out.println("person run");}Person(String n)//建構函式,有一個初始name參數{name = n;}Person(String n,int a){name = n;age = a;}public void speak(){System.out.println(name+":"+age);}}測試:
class ConsDemo{public static void main(String[] args) {Person p = new Person();p.speak();Person p1 = new Person("旺財");p1.speak();Person p2 = new Person("小強",10);p2.speak();}}結果:
從上面我們看到,一個類中我們定義了多個建構函式,它們的參數各不相同,這種現象就是建構函式的重載。
通過建構函式的重載,我們可以通過不同的建構函式初始化不同的對象。