Java 多型中的強制型別轉換
阿新 • • 發佈:2019-04-28
目前多型情況下不能訪問子類特有的成員。
如果需要訪問子類特有的成員,那麼需要進行型別強制轉換.
基本資料型別的轉換
小資料型別-------->大的資料型別 自動型別轉換
大資料型別--------->小資料型別 強制型別轉換 小資料型別 變數名 = (小資料型別)大資料型別;
引用資料型別的轉換
小資料型別--------->大資料型別 自動型別轉換。
大資料型別--------->小資料型別 強制型別轉換
型別轉換最場景的問題: java.lang.ClassCastException。 強制型別轉換失敗。
*/ //動物類 abstract class Animal{ String name; public Animal(String name){ this.name = name; } public abstract void run(); } //老鼠 class Mouse extends Animal{ public Mouse(String name){ super(name); } public void run(){ System.out.println(name+"四條腿慢慢的走!"); } //老鼠特有方法---打洞 public void dig(){ System.out.println("老鼠在打洞.."); } } //魚 class Fish extends Animal{ public Fish(String name){ super(name); } public void run(){ System.out.println(name+"搖搖尾巴游啊遊 !"); } //吹泡泡 public void bubble(){ System.out.println(name+"吹泡泡...!"); } } class Demo2 { public static void main(String[] args) { /* Animal a = new Mouse("老鼠"); //多型 //呼叫子類特有的方法 Mouse m = (Mouse)a; //強制型別轉換 m.dig(); */ Mouse m = new Mouse("米老鼠"); Fish f = new Fish("草魚"); print(f); } //需求: 定義一個函式可以接收任意型別的動物物件,在函式內部要呼叫到動物特有的方法。 public static void print(Animal a){ // Animal a = new Mouse("米老鼠"); if(a instanceof Fish){ Fish f = (Fish)a; f.bubble(); }else if(a instanceof Mouse){ Mouse m = (Mouse)a; m.dig();