如何設計繼承的步驟分為5個: step 1: 找出具有共通屬性&行為的物件 step 2: 設計代表共通狀態&行為的class step 3: 決定subclass是否需要有特殊設計的method(也就是讓某行為具有特定不同的表現方式) step 4: 透過尋找使用共通行為的subclass來找到更多抽象化的機會 step 5: 最後完成class的繼承階層 IS-A test: 此測試是適用繼承階層的任一地方, 也就是說, 如果繼承階層樹被設計地很好, --> 則所有的subclass皆應通過任一個上層superclass的IS-A test。 e.g. (繼承順序由上到下) class Animal: makeNoise() eat() sleep() roam() --> class Canine: roam() --> class Wolf: makeNoise() eat() 寫好繼承階層樹後, 開始做IS-A test: 1. Canine extends Animal --> 通過 2. Wolf extends Canine --> 通過 3. Wolf extends Animal --> 通過 4. Canine IS-A Animal --> 通過 5. Wolf IS-A Canine --> 通過 6. Wolf IS-A Animal --> 通過 可以這麼說: --> Wolf是一個Canine, 所以Canine能做的事Wolf都能做 --> 而且Wolf也是個Animal, 所以Animal能做的事Wolf也都能做 注意: 當我們說"如果X IS-A Y合理"時, 有以下這些可能性: 1. 這兩者或許存在於同一個繼承架構下 2. 這兩者根本是相同的, 或剛好擁有相同的行為 需要記得"X IS-A Y" --> 隱含X可做出任何Y可做的事