27对象的向上向下转型
生活随笔
收集整理的這篇文章主要介紹了
27对象的向上向下转型
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1.對象的向上轉型
也就是把右邊的子類當作左邊的父類來看。
Animal.java
package Demo01;public abstract class Animal {public abstract void eat(); }Cat.java
package Demo01;public class Cat extends Animal{@Overridepublic void eat() {System.out.println("貓吃魚");}public void catchMouse() {System.out.println("貓抓老鼠");} }Demo01Eat.java
package Demo01; /* * 向上轉型一定是安全的,沒有問題的,正確的。但是也有一個弊端: * 對象一旦上轉型為父類,那么就無法調用子類原本持有的內容。 * * 解決方案:用對象的向下轉型【還原】 * */ public class Demo01Eat {public static void main(String[] args) {//對象的向上轉型,就是:父類引用指向子類對象Animal animal = new Cat();animal.eat();//對象的向下轉型Cat cat = (Cat) animal;cat.catchMouse();//ClassCastException,編譯不會報錯,但是無法運行,類轉換異常Dog dog = (Dog) animal;} } //貓吃魚2.對象的向下轉型
Dog.java
貓本來是要轉成貓的,但是如果轉為另外一個狗,那就會產生類轉換錯誤,編譯不會出錯,但是執行不了。這也就是真正“還原”的意思,即本來是什么就轉換為什么,不能轉化還原為其他的東西。
類似于
int num = (int) 10.0;正確
int num = (int)10.5;不正確,精度損失
3.用instanceof進行類型判斷
Demo02Instanceof.java
總結
以上是生活随笔為你收集整理的27对象的向上向下转型的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 26Java中的多态
- 下一篇: 28笔记本USB接口案例分析