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
- 可以更改存取權限
沒有留言:
張貼留言