JAVA基礎 -從父類的引用如何呼叫子類中獨有的方法
阿新 • • 發佈:2018-12-26
首先放上原始檔
父類 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 // 直接繼承父類檔案,沒有任何修改程式碼的操作
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(); // 可以執行子類獨有的方法 } } 執行結果: 動物具有吃的能力
狗是吃肉的
動物具有吃的能力
狗具有看門的能力