1. 程式人生 > >多態的好處 學習筆記

多態的好處 學習筆記

最好 else if use ast 多態 異常 弊端 pub void

  • A:多態的好處
    • a:提高了代碼的維護性(繼承保證)
    • b:提高了代碼的擴展性(由多態保證)
  • B:案例演示
    • 多態的好處
    • 可以當作形式參數,可以接收任意子類對象
  • C:多態的弊端
    • 不能使用子類的特有屬性和行為。
  • 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("看家");
        }
    }

    多態的好處 學習筆記