6.3.1 對(duì)象的生成
對(duì)象的生成包括聲明、實(shí)例化和初始化三方面的內(nèi)容。通常的格式為:
type objectName = new type ( [paramlist] );
1. type objectName; 聲明了一個(gè)類型為type的對(duì)象。其中type是組合類型(包括類和接口)。 對(duì)象的聲明并不為對(duì)象分配內(nèi)存空間 。
2. 運(yùn)算符new為對(duì)象分配內(nèi)存空間,實(shí)例化一個(gè)對(duì)象。new調(diào)用對(duì)象的構(gòu)造方法,返回對(duì)該對(duì)象的一個(gè)引用(即該對(duì)象所在的內(nèi)存地址)。用new可以為一個(gè)類實(shí)例化多個(gè)不同的對(duì)象。這些對(duì)象分別占用不同的內(nèi)存空間,因此改變其中一個(gè)對(duì)象的狀態(tài)不會(huì)影響其它對(duì)象 的狀態(tài)。
3. 生成對(duì)象的最 后一步是執(zhí)行構(gòu)造方法進(jìn)行初始化。 由于對(duì)構(gòu)造方法可以進(jìn)行重寫,所以通過給出不同個(gè)數(shù)或類型的參數(shù)會(huì)分別調(diào)用不同的構(gòu)造方法 。
以 例 6.5中 所 定 義 的 類 Point 為 例 ,我 們 生 成 類 Point的 對(duì) 象 :
Point p1 = new Point();
Point p2 = new Point(5,10);
這里,我們?yōu)轭怭oint生成了兩個(gè)對(duì)象p1、p2,它們分別調(diào)用不同的構(gòu)造方法,p1調(diào)用缺省的構(gòu)造方法(即沒有參數(shù)),p2則調(diào)用帶參數(shù)的構(gòu)造方法。p1、p2分別對(duì)應(yīng)于不同的內(nèi)存空間,它們的值是不同的,可以完全獨(dú)立地分別對(duì)它們進(jìn)行操作。
雖然new運(yùn)算符返回對(duì)一個(gè)對(duì)象的引用,但與C、C++中的指針不同,對(duì)象的引用是指向一個(gè)中間的數(shù)據(jù)結(jié)構(gòu),它存儲(chǔ)有關(guān)數(shù)據(jù)類型的信息以及當(dāng)前對(duì)象所在的堆的地址,而對(duì)于對(duì)象所在的實(shí)際的內(nèi)存地址是不可操作的,這就保證了安全性。

