2007年11月7日 星期三

Head First Java 讀後整理(4) - Better Living in Objectville

1、若 subclass 打算引用 superclass 的 method 再加上額外的行為,可使用「super」關鍵字

2、繼承 => (1)避免重複的程式碼 (2)定義出共通的協議

3、使用 polymorphism,reference 與 object 可以是不同的型別 (參考型別可以是實際物件型別的 superclass)
Animal[] animals = new Animal[3];
animals[0] = new Dog(); //後面可放置任何 Animal 的 subclass 物件
animals[1] = new Cat();
animals[2] = new Wolf();

4、不僅可用在新生 object 上,polymorphism 也可以用在 argument 與 return type 上
class Vet {
public void giveShot(Animal a) {
a.makeNoise();
}
}

class PetOwner {
public void start() {
Vet v = new Vet();
v.giveShot(new Dog()); //執行 Dog 的 makeNoise()
v.giveShot(new Cat()); //執行 Cat 的 makeNoise()
}
}

5、使用 polymorphism,就可以開發出引進新型態 subclass 時也不需修改的程式

6、若要讓 class 不被繼承,可使用「final」關鍵字,或是讓 class 中僅有 private constructor

7、「final」關鍵字也可以僅讓 class 中的某一個 method 無法被 override

8、「override」的使用規則:
  • 參數必須一樣,且 return type 必須相容
  • method 的存取權不得縮小 (若原本是 public 則不能改為 private)

9、「overload」的使用規則:(僅是相同名稱的 method,與 inherit 或 polymorphism 無關)
  • return type 可以不同
  • 不能只改變 return type
  • 可以更改存取權限

沒有留言:

張貼留言