Java 向下和向上轉型
java 轉型問題其實並不複雜,只要記住一句話:父類引用指向子類物件。
什麼叫父類引用指向子類物件,且聽我慢慢道來.
從2個名詞開始說起:向上轉型(upcasting) 、向下轉型(downcasting).
舉個例子:有2個類,Father是父類,Son類繼承自Father。
Father f1 = new Son(); // 這就叫 upcasting (向上轉型)
// 現在f1引用指向一個Son物件
Son s1 = (Son)f1; // 這就叫 downcasting (向下轉型)
// 現在f1還是指向Son物件
第2個例子:
Father f2 = new Father();
Son s2 = (Son)f2; // 出錯,子類引用不能指向父類物件
你或許會問,第1個例子中:Son s1 = (Son)f1;問什麼 是正確的呢。
很簡單因為f1指向一個子類物件,Father f1 = new Son(); 子類s1引用當然可以指向子類物件了。
而f2 被傳給了一個Father物件,Father f2 = new Father();子類s1引用不能指向父類物件。
總結:
1。父類引用指向子類物件,而子類引用不能指向父類物件。
2。把子類物件直接賦給父類引用叫upcasting向上轉型,向上轉型不用強制轉換。
如:Father f1 = new Son();
3。把指向子類物件的父類引用賦給子類引用叫向下轉型(downcasting),要強制轉換。
如:f1 就是一個指向子類物件的父類引用。把f1賦給子類引用s1即 Son s1 = (Son)f1;
其中f1前面的(Son)必須加上,進行強制轉換。
相關文章
- JAVA向上轉型和向下轉型(一)Java
- JAVA向上轉型和向下轉型(二)Java
- java多型-向上轉型和向下轉型Java多型
- 多型,向上向下轉型多型
- C++中的向上型別轉換和向下型別轉換C++型別
- 向上向下傳遞資料
- Python模組---向上向下取整、四捨五入取整Python
- 技術向上,雪坡向下:拼多多的“新帥”與新路
- 理解二叉樹遞迴中的自底向上和自頂向下兩種思想二叉樹遞迴
- 手遊向上 社交向下:互動類遊戲正成為新型社交方式遊戲
- 疫情向下產業向上,中國電競產業變局之年如何“二次崛起”?產業
- 國產化浪潮下,騰訊雲資料庫向上生長、向下紮根資料庫
- Bootstrap系列 -- 35. 按鈕的向下向上三角形boot
- win10電腦中滑鼠自動向下或向上滾動怎麼解決Win10
- scala和java資料型別轉換Java資料型別
- PHP取整,四捨五入取整、向上取整、向下取整、小數擷取PHP
- 在SOLIDWORKS中自底向上與自頂向下裝配體建模有什麼不同?Solid
- Sql Server 裡的向上取整、向下取整、四捨五入取整的例項!SQLServer
- java基本型別和物件之間的轉換Java型別物件
- java轉型問題Java
- java之物件轉型Java物件
- Java入門系列-05-資料型別和型別轉換Java資料型別
- java型別轉換與強制型別轉換(轉)Java型別
- 安聯集團2021營業利潤創新高在中國佈局壽險向上、財險向下
- Java學習--Java 中基本型別和字串之間的轉換Java型別字串
- Java中String和byte型別互相轉換Java型別
- JAVA多型性<==>我和網友交流實錄 (轉)Java多型
- Java資料型別的顯式轉換和隱式轉換Java資料型別
- Java集合和泛型Java泛型
- java之物件轉型2Java物件
- JAVA 字元轉浮點型Java字元
- Java 範型攻略篇(轉)Java
- 實現使用者在ListView上進行選擇時出現向上或向下獲取更多提示View
- Java資料型別及型別轉換Java資料型別
- Java的基本型別和引用型別Java型別
- 【Java】資料型別轉換Java資料型別
- java中的型別轉換Java型別
- java- 型別-轉換:基本型別以及包裝型別的轉換Java型別