什么是是JAVA構(gòu)造函數(shù)
每創(chuàng)建一個類的實例都去初始化它的所有變量是乏味的。如果一個對象在被創(chuàng)建時就完成了所有的初始工作,將是簡單的和簡潔的。因此,Java在類里提供了一個特殊的成員函數(shù),叫做構(gòu)造函數(shù)(Constructor)。
一個構(gòu)造函數(shù)是對象被創(chuàng)建時初始對象的成員函數(shù)。它具有和它所在的類完全一樣的名字。一旦定義好一個構(gòu)造函數(shù),與new運算符一起使用,創(chuàng)建對象時就會自動調(diào)用它。構(gòu)造函數(shù)沒有返回類型,即使是void類型也沒有。這是因為一個類的構(gòu)造函數(shù)的返回值的類型就是這個類本身。構(gòu)造函數(shù)的任務(wù)是初始化一個對象的內(nèi)部狀態(tài),所以用new操作符創(chuàng)建一個實例后,立刻就會得到一個清楚、可用的對象。
構(gòu)造方法是一種特殊的方法,具有以下特點。
(1)構(gòu)造方法的方法名必須與類名相同。
(2)構(gòu)造方法沒有返回類型,也不能定義為void,在方法名前面不聲明方法類型。
(3)構(gòu)造方法的主要作用是完成對象的初始化工作,它能夠把定義對象時的參數(shù)傳給對象的域。
(4)構(gòu)造方法不能由編程人員調(diào)用,而要系統(tǒng)調(diào)用。
(5)構(gòu)造函數(shù)不能被直接調(diào)用,必須通過new運算符在創(chuàng)建對象時才會自動調(diào)用(即在new的時候就開始執(zhí)行構(gòu)造函數(shù)里面的語句);而一般的方法是在程序執(zhí)行到它的時候被調(diào)用的.
(6)一個類可以定義多個構(gòu)造方法,如果在定義類時沒有定義構(gòu)造方法,則編譯系統(tǒng)會自動插入一個無參數(shù)的默認構(gòu)造器,這個構(gòu)造器不執(zhí)行任何代碼。
(7)構(gòu)造方法可以重載,以參數(shù)的個數(shù),類型,或排列順序區(qū)分。
(8)當(dāng)定義一個類的時候,如果程序員不創(chuàng)建構(gòu)造函數(shù),則Java編譯器就會提供一個默認的不帶參數(shù)的構(gòu)造函數(shù)。創(chuàng)建對象時系統(tǒng)就會自動調(diào)用這個默認的構(gòu)造函數(shù)來創(chuàng)建類的對象。如
Public Class Person{
Int age;
String name;
//默認的構(gòu)造函數(shù)為(java編輯器會自動生成的)
Public Person(){
}
Person p=new Person();
p.age=10;
p.name=”張三”;
}
java 構(gòu)造函數(shù)的執(zhí)行過程
類初始化時構(gòu)造函數(shù)調(diào)用順序: public class Demo_1 { /** * @param args */ public static void main(String[] args){ new Money(); new Dollar(); new Rmb(); } } class Money{ public Money(){ System.out.println("Money is construct"); } } class Dollar{ public Dollar(){ System.out.println("Dollar is construct!"); } } class Rmb{ public Rmb(){ System.out.println("RMB is construct"); } } 輸出結(jié)果: Dollar is construct! RMB is construct
(1)初始化對象的存儲空間為零或null值;
(2)調(diào)用父類構(gòu)造函數(shù);
(3)按順序分別調(diào)用類成員變量和實例成員變量的初始化表達式;
Money is construct