Java中,對象的向上轉型和向下轉型

對象的向上轉型其實就是多態的寫法
格式:父類名稱 對象名稱=new 子類名稱;
含義:右側創建一個子類對象,把它當做父類來看做使用;
注意事項:向上轉型一定是安全的,從小範圍轉向了大範圍。

舉例:
Animal animal=new Cat();
//創建一個貓,當做動物看待 小範圍的貓向上轉換成更大範圍的動物

Animal.java
public abstract class Animal {
		public abstract void eat{};
}
cat.java
public class cat extends Animal{
		public void eat(){
		System.out.println("喫魚")
	}
}

main.java
public class main(){
		public static void main(String[] args){
			Animal animal=new Cat();
			animal.eat();
	}
}

輸出:
喫魚

向上轉型有個問題,
對象一旦向上轉型爲父類,那麼就無法調用子類原本特有方法。
例如:Cat類有個catchMouse()方法,在主類main中,animal.catchMouse不存在。
解決方案:對象的向下轉型
格式:子類名稱 對象名 =(子類名稱)父類名稱
含義:將父類對象還原爲本來的子類對象

Animal animal=new Cat();
Cat cat=(Cat) animal;
animal.catchMouse();
//次轉換可調用成功

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章