1. 程式人生 > >JAVA基礎 -從父類的引用如何呼叫子類中獨有的方法

JAVA基礎 -從父類的引用如何呼叫子類中獨有的方法

首先放上原始檔

父類  Animal.java

package com.imooc; public class Animal {
    public void eat(){            //注意這個eat方法
     System.out.println("動物具有吃的能力");
    }
} 子類  Dog.java package com.imooc; public class Dog extends Animal {
    public void eat(){           //重寫父類的eat方法
     System.out.println("狗是吃肉的");
    }
    public void watchDoor(){    //子類中獨有的方法,思考如何呼叫它呢?
     System.out.println("狗具有看門的能力");
    }
} 子類  Cat.java   // 直接繼承父類檔案,沒有任何修改程式碼的操作
package com.imooc; public class Cat extends Animal { } 主函式  Initial.java public class Initial {
 public static void main(String[] args) {
  // TODO Auto-generated method stub
        Animal animal1 = new Animal();//animal1  /2/3都是引用,引用指向的是本類或者子類物件
        Animal animal2 = new Dog();//父類的引用是可以指向子類的物件的
        Animal animal3 = new Cat();
        animal1.eat();      //animal1是建立的父類本身的物件,所以其執行的是父類下的eat方法
        animal2.eat();      //animal2是建立的子類的物件,所以其執行的是Dog類下重寫的eat方法
        animal3.eat();      //animal3是建立的子類的物件,所以其執行的是Cat類下的繼承於Animal的eat方法         //animal2.watchDoor();    這個程式碼是錯誤的,父類的引用不能直接呼叫子類的方法
         Dog dog = (Dog)animal2;  //將父類引用強制轉換成子類,功能變強大了
        dog.watchDoor();   // 可以執行子類獨有的方法 } } 執行結果: 動物具有吃的能力
狗是吃肉的
動物具有吃的能力
狗具有看門的能力