Java中的上溯造型和下溯造型是重要的概念,涉及到Java中的類和對象的使用。下面將分別介紹上溯造型和下溯造型的含義和用法。
上溯造型
上溯造型是指將一個子類的實(shí)例賦值給一個父類類型的變量。這個過程涉及到隱式類型轉(zhuǎn)換。
// 定義一個父類 class Animal { public void shout() { System.out.println("動物在叫!"); } } // 定義一個子類 class Dog extends Animal { public void shout() { System.out.println("狗在叫!"); } public void guard() { System.out.println("狗在看家!"); } } // 實(shí)例化子類 Dog dog = new Dog(); // 上溯造型,將子類實(shí)例賦值給父類變量 Animal animal = dog; // 調(diào)用父類方法,輸出 "狗在叫!" animal.shout(); // 父類變量無法調(diào)用子類特有的方法 // 下面的代碼編譯會報(bào)錯 // animal.guard();
下溯造型
下溯造型是指將一個父類類型的變量強(qiáng)制轉(zhuǎn)換成一個子類類型的變量。這個過程需要使用強(qiáng)制類型轉(zhuǎn)換。
// 實(shí)例化父類 Animal animal = new Animal(); // 下溯造型,將父類變量強(qiáng)制轉(zhuǎn)換成子類變量 Dog dog = (Dog)animal; // 強(qiáng)制轉(zhuǎn)換后可以調(diào)用子類的方法 dog.guard(); // 父類變量在沒有進(jìn)行上溯造型的情況下進(jìn)行下溯造型,會拋出異常 // 下面的代碼會拋出 ClassCastException 異常 // Animal newAnimal = new Animal(); // Dog newDog = (Dog)newAnimal;
上溯造型和下溯造型常用于多態(tài)性實(shí)現(xiàn)中,可以讓代碼更加靈活。