Pages

2008/10/17

[Java] "equals()"與"=="

"=="是比較兩參考變數所儲存之值,
若該參考變數為基本資料型態, 會比較其存放之值是否相同, 相同則傳回true, 反之則傳回false.
若該參考變數為物件型態, 會比較該變數是否指向同一物件, 相同則傳回true, 反之則傳回false.

"equals()"為Java類別Object原有之函式, 繼承Object時可依據比較之內容及規則覆寫該方法,
若沒有覆寫equals(), 其比較條件如同"==".
JavaAPI有註明當覆寫equals()時, 必須覆寫hashCode(),
因當兩個物件相等時, 其hash code也必定會相等.
(若沒修改, JVM會隨機產生一組hash code)

[Java] Override 覆寫

當子類別繼承父類別時, 可以透過Override方式改寫父類別的方法,
當使用override修改父類別的方法, 有下列幾點限制:
  1. 方法名稱不能修改.(改了就是新增方法而不是覆寫了!)
  2. 若父類別的方法有丟出例外時, 子類別也必須丟出此例外或該例外之子類別.
  3. 子類別方法所傳回值之型態須與父類別方法一樣. (若更改傳回值之型態, 這樣就是overload了吧!)
  4. 子類別方法之修飾詞權限不得小於父類別. (繼承的用意就是希望孩子變強, 那有變弱的道理!)
  5. 若父類別之方法設定為final, 子類別不能修改該方法. (廢言, 都已經是final怎麼改寫)
  6. 若父類別之方法宣告為static, 子類別不可將其宣告為non-static, 反之亦然.


以下情況皆為重新定義非覆寫:
  1. 修改父類別之靜態方法
  2. 修改父類別之private方法

2008/10/14

[SQL] Primary Key 與 Foreign Key

關聯式資料庫(RDB)中, 建立資料表的關聯性是由key組成的.
key可分為Primary Key 與 Foreign Key兩種.

Primary Key:
標記為Primary Key的欄位其值是唯一不可重覆.
Foreign Key:
將兩資料表建立關聯性之欄位其設定Key值為Foreign Key.

2008/10/08

[Java] Encapsulation 封裝

封裝的好處:
  1. 可避免類別中的屬性直接被存取
  2. 當class中的method有更動時, 可以確保每支使用到該class的程式都可以統一做變更