在Java中,對象之間的類型轉(zhuǎn)換分為向上轉(zhuǎn)型和向下轉(zhuǎn)型兩種。
向上轉(zhuǎn)型是指將一個派生類對象賦值給一個基類引用類型的操作,轉(zhuǎn)換后的基類引用只能訪問派生類從基類繼承過來的方法和成員變量。
// 定義一個基類 Animal class Animal { public void move() { System.out.println("動物在移動"); } } // 定義一個派生類 Dog class Dog extends Animal { public void bark() { System.out.println("狗在吠叫"); } } // 向上轉(zhuǎn)型 Animal animal = new Dog(); animal.move(); // 輸出 "動物在移動"
向下轉(zhuǎn)型是指將一個基類引用強制轉(zhuǎn)換為一個派生類對象,這種轉(zhuǎn)換需要使用 instanceof 運算符確定基類引用變量指向的對象是否為指定的派生類對象。
// 定義一個基類 Animal class Animal { public void move() { System.out.println("動物在移動"); } } // 定義一個派生類 Dog class Dog extends Animal { public void bark() { System.out.println("狗在吠叫"); } } // 向下轉(zhuǎn)型 Animal animal = new Dog(); if (animal instanceof Dog) { Dog dog = (Dog) animal; dog.bark(); // 輸出 "狗在吠叫" }
總的來說,向上轉(zhuǎn)型安全性高,能夠避免類型轉(zhuǎn)換的錯誤,而向下轉(zhuǎn)型需要謹(jǐn)慎使用,并且一定要進行類型檢查,以避免程序出錯。