引用類型轉換:
1.向上類型轉換(隐式/自動類型轉換),是小類型到大類型的轉換。
如:Dog dog=new Dog();Animal animal=dog;//正确,自動類型提升,向上類型轉換
2.向下類型轉換(強制類型轉換),是大類型到小類型的轉換(存在風險,溢出)
如:Dog dog1=(Dog)animal;//向下類型轉換
3.instanceof運算符,來解決引用對象的類型,避免類型轉換的安全性問題。如:
Dog dog=new Dog();
Animal animal=dog;
Cat cat=(Cat)animal;//編譯時不會出錯(按Cat類型進行編譯),但運作時會報錯,因為它開辟的是Dog類型的空間,而(無法将引用類型進行轉換)無法将dog對象轉換成Cat類型,并且此方法對程式的安全性有影響。此時應該利用instanceof和if語句結合使用,進行驗證,以保證程式的安全性,如:
if(animal instanceof Cat){//判斷animal類中是否包含Cat類型的元素,若包含則進行轉換,instanceof傳回值為布爾類型
Cat cat=(Cat)animal;}else{
System.out.println("無法進行類型轉換");}