多型中引用型別的轉換 以及instanceof運算子的使用
阿新 • • 發佈:2019-07-13
引用型別轉換
1.向上型別轉換(隱式/自動型別轉換),是小型別到大型別的轉換。
2.向下型別轉換(強制型別轉換),是大型別到小型別,有一定的安全性問題。
3.instanceof運算子,用來解決引用物件型別,避免型別轉換的安全性問題。
舉例如下:
package Java2_3; /** * Animal為父類,Dog與Cat為子類。 * @author qiang * */ public class Test2 { public static void main(String[] args) { // TODO Auto-generated method stub Dog dog = new Dog(); Animal animal = dog;//自動型別提升或叫向上型別轉換 if(animal instanceof Dog){ Dog dog2 = (Dog)animal;//向下型別轉換 System.out.println("轉換了!"); }else{ System.out.println("無法進行型別轉換!"); } if(animal instanceof Cat){ //1.編譯時Cat型別 2.執行時Dog型別 ; //編譯時不會報錯,但執行時會,因為不是兩個型別不匹配 Cat cat = (Cat)animal; }else{ System.out.println("無法進行型別轉換!"); } } }
執行結果為
轉換了!
無法進行型別轉換!