方法參數共有兩種:
基本類型(數字、布爾值)
對象引用:方法得到對對象引用的一個拷貝,原來的對象和這個拷貝所指向的是同一個對象。
方法不能改變基本類型的參數,但對于對象參數來說,情況有所不同。
Java程序設計語言中利用方法參數可以做到和做不到的幾種情況:
方法不能修改基本類型的參數;
方法可以修改對象參數的狀態;
方法不能讓對象參數指向新的對象。
如果一個類聲明為final,只有它的方法(而不包括字段)會被自動設為final。
在類型轉換時,Java在運行時,系統會檢查類型轉換能否進行。若不能,則拋出異常。如果沒有捕捉這個異常,程序就會終止。因此,要養成在類型轉換之前先判斷它是否能成功的編程習慣,這個判斷只需要簡單地使用instanceof操作符。
具有一個或多個抽象方法的類本身也必須聲明為abstract的。
抽象類不能被實例化,即如果一個類被聲明為abstract,就不能構建這個類的任何對象。但仍然可以創建抽象類的對象變量,只是這個變量必須指向它的非抽象之類的對象。
在C++中,抽象方法稱為純虛函數,而且在結尾處標記上“=0”,只要定義了一個純虛函數,那么C++類就是抽象的,在C++中,沒有專門的關鍵字來定義純虛函數。
Object類中的equals方法用于測試某個對象是否同另一個對象相等。它在Object類中的實現是判斷兩個對象是否指向同一塊內存區域。這種測試沒有太大用處。如果想測試對象是否相等,就需要覆蓋equals方法,進行更有意義的比較。
編寫完美equals方法的建議:
1. 顯示參數命名為otherObject
2. 測試this同otherObject是否是同一個對象:
if(this == otherObject) return ture;
3. 測試otherObject是否為null。如果是,就返回false。這個測試是必需的:if(otherObject == null) return false;
4. 測試this和otherObject是否屬于同一個類。這項測試是“對稱性規則”所要求的。 if(getClass() != otherObject.getClass()) return false;
5. 把otherObject的類型轉換為你的類型所屬的類型。
ClassName other = (ClassName)otherObject;
6. 最后比較所有字段。使用==比較基本類型字段,使用equals比較對象字段。
包裝器內包含的信息不可更改。