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

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

生活随笔

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

java

Java 向上类型转换与向下类型转换的理解【复习】

發(fā)布時(shí)間:2025/3/21 java 12 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java 向上类型转换与向下类型转换的理解【复习】 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

今天在回顧 Java 知識(shí)的時(shí)候碰到了這個(gè)知識(shí)點(diǎn),正好重新鞏固一下。

在面向?qū)ο缶幊讨?#xff0c;因?yàn)樽宇?lèi)與父類(lèi)存在繼承關(guān)系,所以對(duì)象類(lèi)型存在著轉(zhuǎn)換,包括向上類(lèi)型轉(zhuǎn)換和向下類(lèi)型轉(zhuǎn)化。

1.向上類(lèi)型轉(zhuǎn)換是指將子類(lèi)對(duì)象的引用轉(zhuǎn)化為父類(lèi)對(duì)象的引用,用個(gè)例子說(shuō)明一下:

//父類(lèi): public class ParentClass {public void print() {System.out.println("父類(lèi)方法");} } // 子類(lèi) public class ChildClass extends ParentClass{public void print() {System.out.println("子類(lèi)方法");}public void childMethod() {System.out.println("只在子類(lèi)中定義的方法 ");}public static void main(String[] args) {ParentClass p = new ChildClass();p.print();}}

輸出結(jié)果為:

子類(lèi)方法

也就是子類(lèi)的 print() 方法重寫(xiě)了父類(lèi)的方法,所以輸出的是子類(lèi)的 print()
子類(lèi)對(duì)象的引用轉(zhuǎn)化為父類(lèi)對(duì)象的引用” 這句話(huà)
等號(hào)右邊new ChildClass()就是子類(lèi)對(duì)象的引用
將等號(hào)右邊的東西賦值給等號(hào)左邊,就是轉(zhuǎn)化為父類(lèi)對(duì)象的引用
這樣應(yīng)該明白這句話(huà)了吧

當(dāng)我們?cè)趯?xiě) p. 什么東西的時(shí)候,編輯器自動(dòng)彈出的只有 print()這個(gè)方法,而沒(méi)有childMethod()這個(gè)方法,所以,這個(gè)向上類(lèi)型轉(zhuǎn)換的意思就是子類(lèi)向上類(lèi)型轉(zhuǎn)化成父類(lèi)的對(duì)象,如果子類(lèi)重寫(xiě)了父類(lèi)的方法,輸出結(jié)果是子類(lèi)重寫(xiě)的方法,如果父類(lèi)中沒(méi)有的方法,而在子類(lèi)中存在的方法是不可以調(diào)用的,歸根結(jié)底一句話(huà),父親有的東西你才能調(diào)用,父親給你留下的你怎么修改是你的事

2.向下類(lèi)型轉(zhuǎn)換是指將父類(lèi)對(duì)象的引用轉(zhuǎn)化為子類(lèi)對(duì)象的引用
直接看例子吧,對(duì)比著向上類(lèi)型轉(zhuǎn)換理解

// 父類(lèi) public class ParentClass {public void print() {System.out.println("父類(lèi)方法");} } // 子類(lèi) public class ChildClass extends ParentClass{public void childMethod() {System.out.println("只在子類(lèi)中定義的方法 ");}public static void main(String[] args) {ParentClass p = new ChildClass(); // 這里是向上類(lèi)型轉(zhuǎn)換p.print();ChildClass c = (ChildClass)p; // p本來(lái)是父類(lèi)對(duì)象的引用,現(xiàn)在我要做的是向下類(lèi)型轉(zhuǎn)換,所以,強(qiáng)制把父類(lèi)對(duì)象的引用轉(zhuǎn)化為了子類(lèi)對(duì)象的引用c.print();c.childMethod();} }

輸出結(jié)果:

父類(lèi)方法 父類(lèi)方法 只在子類(lèi)中定義的方法

再說(shuō)明一下 向下類(lèi)型轉(zhuǎn)換:一個(gè)已經(jīng)向上轉(zhuǎn)型的子類(lèi)對(duì)象可以使用強(qiáng)制類(lèi)型轉(zhuǎn)換的格式,將父類(lèi)引用類(lèi)型轉(zhuǎn)為子類(lèi)引用類(lèi)型

有的同學(xué)問(wèn)了,問(wèn)啥不直接這樣寫(xiě):

ChildClass child = new ParentClass();

問(wèn)的好,因?yàn)?#xff0c;我們并不能保證子類(lèi)的方法父類(lèi)一定有是吧,所以要按照上面的例子那樣寫(xiě)。

總結(jié)

以上是生活随笔為你收集整理的Java 向上类型转换与向下类型转换的理解【复习】的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

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