Java 向上类型转换与向下类型转换的理解【复习】
今天在回顧 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)換理解
輸出結(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)題。
- 上一篇: Android --- BaseQuic
- 下一篇: java美元兑换,(Java实现) 美元