Java@Ch11. Inheritance and Polymorphism 2010.12.31 Outline • Inheritance • Superclasses and Subclasses • Using super keyword • Overiding Method • Overiding vs. Overloading • Dynamic Binding • Polymorphism [Sample code] Novice.java、Magician.java 、Swordman.java 、Game.java DynamicBindingDemo.java Inheritance • Object-oriented programming allows you to derive new classes from existing classes. This is called inheritance. Superclasses and Subclasses Novice HP MP attack() inheritance inheritance Magician Swordman magic_attack() power_attack() 程式範例: Novice.java、Magician.java 、 Swordman.java 、Game.java Using super keyword • The super refers to the superclass of the class in which super appears. • It can be used in two ways: 1. To call a superclass constructor. 2. To call a superclass method. Overiding Method Novice HP MP attack() inheritance Archer attack() overriding 程式範例: Archer.java Overiding vs. Overloading • Overriding 覆寫 Sometimes it is necessary for the subclass to modify the implementation of a method defined in the superclass. • Overloading 多載 Define multiple methods with the same name but different signature . (課本 p.407) Dynamic Binding • Dynamic Binding 動態載入 物件的行為並不是在編譯時期 (compiler-time)就已經 決定了。而是在程式執行時期於(run-time)才動態地決定 的。如何動態地決定。就看物件當時的狀態(state)而定, 物件封裝了所有可能的狀態處理 方法,並且根據外邊送 來的訊息做出適當的反應。 (課本 p.409) 程式範例: DynamicBindingDemo.java 程式範例: DynamicBindingDemo.java Polymorphism • Polymorphism 多型 簡單來說,多型是指一個物件可以擁有多個不同的型 態,而這些型態必須是該物件所繼承的其他類別。 生物 Organism O = new Organism(); People P = new People(); Organism O2 = new People(); extends 動物 extends 人 • Polymorphism - Overriding - Overloading - Dynamic binding - Interface/abstract ArrayList • ArrayList class that can be used to store an unlimited number of objects. Java.util.ArrayList add(o object): void add(index: int, o: object): void clear(): void indexOf(o: object): int isEmpty(): boolean lastIndexOf(o: object): int remove(o: obect): boolean size(): int 程式範例: TestArrayList.java