java 核心技術(shù)-12版 卷Ⅰ- 4.3.4 從構(gòu)造器開(kāi)始
????下面先看看 Employee 類的構(gòu)造器:
????
????可以看到,構(gòu)造器與類同名。構(gòu)造Emplyee 類的對(duì)象時(shí),構(gòu)造器會(huì)運(yùn)行,這會(huì)將實(shí)例字段初始化為所希望的初始狀態(tài)。
????例如,使用下面這個(gè)代碼創(chuàng)建Emplyee 類的一個(gè)實(shí)例時(shí):
????將如下設(shè)置實(shí)例字段:
????
????構(gòu)造器與其他方法有一個(gè)重要的不同。構(gòu)造器總是結(jié)合new 操作符來(lái)調(diào)用。不能對(duì)一個(gè)已經(jīng)存在的對(duì)象調(diào)用構(gòu)造器來(lái)重新設(shè)置實(shí)例字段。例如,
????將產(chǎn)生編譯錯(cuò)誤。
本章稍后還會(huì)更詳細(xì)地介紹有關(guān)構(gòu)造器的內(nèi)容?,F(xiàn)在只需要記住:
構(gòu)造器與類同名
每個(gè)類可以有一個(gè)以上的構(gòu)造器
構(gòu)造器可以有0-n個(gè)參數(shù)
構(gòu)造器沒(méi)有返回值
構(gòu)造器總是結(jié)合new 操作符一起調(diào)用
C++ 注釋: Java 中構(gòu)造器的工作方法與C++ 相同。但是,要記住所有Java對(duì)象都是在堆中構(gòu)造的,構(gòu)造器總是結(jié)合 new 操作符一起使用。C++ 程序員最容易犯得錯(cuò)誤是忘記 new 操作符:
????Emplyee number007("James Bond",100000,1950,1,1) ; // C++, not Java
????這條語(yǔ)句在C++ 中能夠正常運(yùn)行,但在Java中卻不行。
警告: 請(qǐng)注意,不要引入與實(shí)例字段同名的局部變量。例如,下面的構(gòu)造器將不會(huì)設(shè)置name 或 salary 實(shí)例字段
這個(gè)構(gòu)造器聲明了局部變量 name 和salary 。這些變量只能在構(gòu)造器內(nèi)部訪問(wèn),他們會(huì)遮蔽(shadow)同名的實(shí)例字段。有些程序員偶爾會(huì)不假思索地寫出這類代碼,因?yàn)樗麄兊氖种笗?huì)不自覺(jué)地增加數(shù)據(jù)類型。這種錯(cuò)誤很難檢查出來(lái),因此,必須注意在所有的方法中都不要使用與實(shí)例字段同名的變量。