多態中引用類型的轉換 以及instanceof運算符的使用

引用類型轉換java

1.向上類型轉換(隱式/自動類型轉換),是小類型到大類型的轉換。安全

2.向下類型轉換(強制類型轉換),是大類型到小類型,有必定的安全性問題。code

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

	}
		
}

運行結果爲class

轉換了!
沒法進行類型轉換!
相關文章
相關標籤/搜索