1. 程式人生 > >多型中引用型別的轉換 以及instanceof運算子的使用

多型中引用型別的轉換 以及instanceof運算子的使用

引用型別轉換

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("無法進行型別轉換!");
		}
		

	}
		
}

執行結果為

轉換了!
無法進行型別轉換!