一、基礎概念
1.什么時候定義構造函數:
當對象創建時,需要對象必須具備的內容,通過構造函數完成。
2.一般函數和構造函數的區別:
定義上:構造函數只為對象的初始化,只執行一次。一般函數定義對象應該具備的功能。可以被調用多次。
運行上:構造函數在對象一創建,就會執行。一般函數是只有被對象調用才執行。
3.構造函數的格式要求:
(1). 函數名和類名相同。
(2). 沒有返回值類型。
(3). 沒有具體的返回值。
4.構造函數的作用:就是對對象進行初始化。
5.揭秘:
(1). class定義的類中,如果沒有聲明任何構造函數,類中會默認有一個空參數的構造函數。
(2). 如果在class類中自定義了構造函數,默認的構造函數就沒有了。構造函數在類中有多個的情況下,是以重載的形式存在的。
6.注意:
(1). 構造函數中也可以有return語句,用於結束初始化動作。
(2). 構造函數的前面加了void,編譯可以通過,但是不再是構造函數,而是一般函數。(建議不要這樣寫)
二、實例代碼
要求用構造函數的重載來實現,Person對象一旦建立就可能有一個公共的名字,或者有一個自己的名字,或者有一個自己的名字和年齡。並打印出來。
1 class Person 2 { 3 private String name; 4 private int age; 5 6 //多個構造函數在同一個Person類中的重載形式 7 8 //定義一個構造函數,用於給Person對象初始化。 9 //Person 對象初始化就有姓名。 10 Person(String s) 11 { 12 name = s; 13 } 14 //Person 對象初始化就有姓名和年齡。 15 Person (String s,int a) 16 { 17 name = s; 18 age = a; 19 } 20 //Person 對象初始化什么也沒有,構造一個空參的構造函數。 21 Person () 22 { 23 name = "bady"; 24 } 25 26 public void show1() 27 { 28 System.out.println("name="+name); 29 } 30 public void show2() 31 { 32 System.out.println("name="+name+",age="+age); 33 } 34 } 35 36 37 class PersonDemo2 38 { 39 40 public static void main (String[] args) 41 { 42 //對象會自動調用對應的構造函數,進行初始化。 43 Person p1 = new Person("xiaoming"); 44 p1.show1(); 45 Person p2 = new Person("xiangming",20); 46 p2.show2(); 47 Person p3 = new Person(); 48 p3.show1(); 49 } 50 }
三、代碼運行