日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

27对象的向上向下转型

發布時間:2025/3/13 编程问答 14 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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

package Demo01;public class Dog extends Animal{@Overridepublic void eat() {System.out.println("狗吃骨頭");}public void watchHouse() {System.out.println("狗看家");} }

貓本來是要轉成貓的,但是如果轉為另外一個狗,那就會產生類轉換錯誤,編譯不會出錯,但是執行不了。這也就是真正“還原”的意思,即本來是什么就轉換為什么,不能轉化還原為其他的東西。

類似于
int num = (int) 10.0;正確
int num = (int)10.5;不正確,精度損失
3.用instanceof進行類型判斷
Demo02Instanceof.java

package Demo01; /* * 如何才能知道一個父類引用的對象,本來是什么子類? * 格式: * 對象 instanceof 類名稱 * 這將會得到一個boolean值結果,也就是判斷前面的對象能不能當作后面類型的實例。 * */ public class Demo02Instanceof {public static void main(String[] args) {Animal animal = new Cat();System.out.println(animal instanceof Cat);//TrueSystem.out.println(animal instanceof Dog);//Falseif (animal instanceof Dog) {Dog dog = (Dog) animal;dog.eat();}else {Cat cat = (Cat) animal;cat.catchMouse();}//貓抓老鼠} }

總結

以上是生活随笔為你收集整理的27对象的向上向下转型的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。