多態的好處 學習筆記
阿新 • • 發佈:2018-06-22
最好 else if use ast 多態 異常 弊端 pub void A:多態的好處
B:案例演示
C:多態的弊端
- a:提高了代碼的維護性(繼承保證)
- b:提高了代碼的擴展性(由多態保證)
- 多態的好處
- 可以當作形式參數,可以接收任意子類對象
- 不能使用子類的特有屬性和行為。
class Demo4_Animal { public static void main(String[] args) { //Cat c1 = new Cat(); //c1.eat(); method(new Cat()); method(new Dog()); //Animal a = new Cat(); 開發的是很少在創建對象的時候用父類引用指向子類對象,直接創建子類對象更方便,可以使用子類中的特有屬性和行為 } //Cat c = new Dog();狗是一只貓,這是錯誤的 /*public static void method(Cat c) { c.eat(); } public static void method(Dog d) { d.eat(); }*/ //如果把狗強轉成貓就會出現類型轉換異常,ClassCastException public static void method(Animal a) { //當作參數的時候用多態最好,因為擴展性強 //關鍵字 instanceof 判斷前邊的引用是否是後邊的數據類型 if (a instanceof Cat) { Cat c = (Cat)a; c.eat(); c.catchMouse(); }else if (a instanceof Dog) { Dog d = (Dog)a; d.eat(); d.lookHome(); }else { a.eat(); } } } class Animal { public void eat() { System.out.println("動物吃飯"); } } class Cat extends Animal { public void eat() { System.out.println("貓吃魚"); } public void catchMouse() { System.out.println("抓老鼠"); } } class Dog extends Animal { public void eat() { System.out.println("狗吃肉"); } public void lookHome() { System.out.println("看家"); } }
多態的好處 學習筆記