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