java 核心技術(shù)-12版 卷Ⅰ- 4.3.7 隱式參數(shù)與顯式參數(shù)
????方法會操作對象并訪問它們的實例字段。例如,以下方法
將調(diào)用這個方法的對象的salary 實例字段為一個新值??紤]下面這個調(diào)用:
????
其作用是將number007.salary字段的值增加 5%。具體地說,這個調(diào)用將執(zhí)行以下指令
raiseSalary 方法有2個參數(shù)。第一個參數(shù)稱為 隱式(implicit)參數(shù),是出現(xiàn)在方法名前的Employee類型的對象。第二個參數(shù)是位于方法名后面括號中的數(shù)值,這是一個顯式(explicit)參數(shù)。(有人把隱式參數(shù)稱為方法調(diào)用的目標或接收者)
????可以看出,顯式參數(shù)顯式地列在方法聲明中,例如 double byPercent。 隱式參數(shù)則沒有出現(xiàn)在方法聲明中。
????在每一個方法中,關(guān)鍵字 this 指向隱式參數(shù)。如果愿意,可以如下改寫 raiseSalary 方法
????有些程序員更偏愛這樣的風格,因為這樣可以將實例字段與局部變量明顯地區(qū)分開來。
????C++ 注釋: 在C++ 程序中,通常在類的外面定義方法:
?void Employee::raiseSalary(double byPercent) // C++, not java
{
????...
}
如果在類的內(nèi)部定義方法,那么這個方法將自動成為內(nèi)聯(lián)(inline)方法。
class Employee {
...
????int getName() {
????????return name;
????}
}
在Java中,所有的方法都必須在類的內(nèi)部定義,但這并不表示它們是內(nèi)聯(lián)方法。是否將每個方法設(shè)置為內(nèi)聯(lián)方法是Java虛擬機的任務。即時編譯器會關(guān)注那些簡短、經(jīng)常調(diào)用而且沒有被覆蓋的方法調(diào)用,并進行優(yōu)化