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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > java >内容正文

java

java 子类 父类 转换_Java子类与父类之间的类型转换

發(fā)布時(shí)間:2023/12/20 java 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 子类 父类 转换_Java子类与父类之间的类型转换 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1.向上轉(zhuǎn)換

父類(lèi)的引用變量指向子類(lèi)變量時(shí),子類(lèi)對(duì)象向父類(lèi)對(duì)象向上轉(zhuǎn)換。從子類(lèi)向父類(lèi)的轉(zhuǎn)換不需要什么限制,只需直接蔣子類(lèi)實(shí)例賦值給父類(lèi)變量即可,這也是Java中多態(tài)的實(shí)現(xiàn)機(jī)制。

2.向下轉(zhuǎn)換

在父類(lèi)變量調(diào)用子類(lèi)特有的、不是從父類(lèi)繼承來(lái)的方法和變量時(shí),需要父類(lèi)變量向子類(lèi)轉(zhuǎn)換。

為什么要向下轉(zhuǎn)換?

在繼承關(guān)系中,有一些方法是不適合由父類(lèi)定義并由子類(lèi)繼承并重寫(xiě)的,有些方法是子類(lèi)特有的,不應(yīng)該通過(guò)繼承得到,且子類(lèi)可能也會(huì)有自己特有的成員變量,那么在使用多態(tài)機(jī)制的時(shí)候,若我們要通過(guò)父類(lèi)型變量使用到這些子類(lèi)特有的方法和屬性的話,就需要將服類(lèi)型變量轉(zhuǎn)換成對(duì)應(yīng)的子類(lèi)型變量。一個(gè)典型例子便是標(biāo)準(zhǔn)庫(kù)中的數(shù)據(jù)類(lèi)型包裝類(lèi):Integer類(lèi),Double類(lèi),Long類(lèi)等,它們都繼承自Number類(lèi),且它們都有一個(gè)方法叫做compareTo用于比較兩個(gè)同樣的類(lèi)型。然而這個(gè)方法是這些子類(lèi)通過(guò)實(shí)現(xiàn)Comparable接口來(lái)實(shí)現(xiàn)的,在Number類(lèi)中并沒(méi)有該方法的實(shí)現(xiàn),因此若要通過(guò)Number類(lèi)型變量來(lái)使用compareTo方法,就要先將Number類(lèi)轉(zhuǎn)換成子類(lèi)的對(duì)象。

注意

父類(lèi)變量向子類(lèi)轉(zhuǎn)換必須通過(guò)顯式強(qiáng)制類(lèi)型轉(zhuǎn)換,采取和向上轉(zhuǎn)換相同的直接賦值方式是不行的;并且,當(dāng)把一個(gè)父類(lèi)型變量實(shí)例轉(zhuǎn)換為子類(lèi)型變量時(shí),必須確保該父類(lèi)變量是子類(lèi)的一個(gè)實(shí)例,從繼承鏈的角度來(lái)理解這些原因:子類(lèi)一定是父類(lèi)的一個(gè)實(shí)例,然而父類(lèi)卻不一定是子類(lèi)的實(shí)例。在進(jìn)行父類(lèi)向子類(lèi)的轉(zhuǎn)換時(shí),一個(gè)好的習(xí)慣是通過(guò)instanceof運(yùn)算符來(lái)判斷父類(lèi)變量是否是該子類(lèi)的一個(gè)實(shí)例,否則在運(yùn)行時(shí)會(huì)拋出運(yùn)行異常ClassCastException,表示類(lèi)轉(zhuǎn)換異常。

總結(jié)

以上是生活随笔為你收集整理的java 子类 父类 转换_Java子类与父类之间的类型转换的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。