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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

引用类型强制转换

發布時間:2023/12/14 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 引用类型强制转换 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

多態表現在兩個方面

1.一個父類型的引用在指向不同的對象時會有不同的實現;

如:IUnionPay atm;

atm = new ATMABC(); ?atm = new ATMCBC();

總結,運行時,方法執行看對象!

2.一個子類型對象,“向上造型”成不同的父類型時,可以使用的功能不一樣

“向上造型”指子類類型的變量,可以自動“向上”轉化為父類型的變量。

ATMCBC cbc = new ATMCBC();

IUnionPay atm = cbc;//變量cbc向上造型為父類型IUnionPay類型

再比如:因為ATMCBC類實現了IPolice接口,所以

IPoloce pol = cbc;//編譯正確,變量cbc同樣可以向上造型為IPolice類型

這里父類型可以是抽象類,也可以是接口(父類型的變量僅能使用子類型重寫父類的方法)

優點:動態調度,不同的對象可以調用不同的方法

缺點:父類型變量只能調用子類中重寫父類的方法

缺點解決:強制轉換父類型變量轉化為子類型變量(或者父類型的變量不能自動轉換為子類型的變量),這樣父類型變量可以調用更多方法

例如:

1. IPolice pol = new ATMCBC();//父類型變量只能使用takPic方法

ATMCBC c = pol;//編譯錯誤:父類型轉換為子類型需要強制轉換!

ATMCBC c = (ATMCBC)pol;

//編譯正確。因為pol變量所指向的實際對象類型為ATMCBC,目標類型也是ATMCBC;

2. ?ATMCBC?c?= (ATMCBC)pol;

IUnionPay p =(IUnionPay)pol;

//因為實際對象時ATMCBC類型,目標類型時IUnionPay類型。實際對象類型是目標類型的子類型。

3.ATMABC aa = (ATMCBC)pol;

//編譯正確,但運行錯誤;因為pol指向的對象類型,不是ATMABC的子類型

強轉看對象!目標類型必須是對象類型本身或者對象的父類型

總結

以上是生活随笔為你收集整理的引用类型强制转换的全部內容,希望文章能夠幫你解決所遇到的問題。

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