久久精品五月,日韩不卡视频在线观看,国产精品videossex久久发布 ,久久av综合

站長資訊網
最全最豐富的資訊網站

Java 轉型問題

Java 轉型問題其實并不復雜,只要記住一句話:父類引用指向子類對象。

什么叫父類引用指向子類對象,且聽我慢慢道來。

從 2 個名詞開始說起:向上轉型(upcasting)向下轉型(downcasting)

舉個例子:有2個類,Father 是父類,Son 類繼承自 Father。

第 1 個例子:

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(); 子類 s2 引用不能指向父類對象。

總結:

1、父類引用指向子類對象,而子類引用不能指向父類對象。

2、把子類對象直接賦給父類引用叫upcasting向上轉型,向上轉型不用強制轉換嗎,如:

Father f1 = new Son();

3、把指向子類對象的父類引用賦給子類引用叫向下轉型(downcasting),要強制轉換,如:

f1 就是一個指向子類對象的父類引用。把f1賦給子類引用 s1 即 Son s1 = (Son)f1;

其中 f1 前面的(Son)必須加上,進行強制轉換。

一、向上轉型。

通俗地講即是將子類對象轉為父類對象。此處父類對象可以是接口。

1、向上轉型中的方法調用:

實例

public class Animal { public void eat(){ System.out.println("animal eatting…"); } } class Bird extends Animal{ public void eat(){ System.out.println("bird eatting…"); } public void fly(){ System.out.println("bird flying…"); } } class Main{ public static void main(String[] args) { Animal b=new Bird(); //向上轉型 b.eat(); //! error: b.fly(); b雖指向子類對象,但此時丟失fly()方法 dosleep(new Male()); dosleep(new Female()); } public static void dosleep(Human h) { h.sleep(); } }

實例

public class Human { public void sleep() { System.out.println("Human sleep.."); } } class Male extends Human { @Override public void sleep() { System.out.println("Male sleep.."); } } class Female extends Human { @Override public void sleep() { System.out.println("Female sleep.."); } }

注意這里的向上轉型:

Animal b=new Bird(); //向上轉型  b.eat();

此處將調用子類的 eat() 方法。原因:b 實際指向的是 Bird 子類,故調用時會調用子類本身的方法。

需要注意的是向上轉型時 b 會遺失除與父類對象共有的其他方法。如本例中的 fly 方法不再為 b 所有。

2、向上轉型的好處

看上面的代碼:

public static void dosleep(Human h) {      h.sleep();  }

這里以父類為參數,調有時用子類作為參數,就是利用了向上轉型。這樣使代碼變得簡潔。不然的話,如果 dosleep 以子類對象為參數,則有多少個子類就需要寫多少個函數。這也體現了 JAVA 的抽象編程思想。

二、向下轉型。

與向上轉型相反,即是把父類對象轉為子類對象。

實例

package com.wensefu.other1; public class Girl { public void smile(){ System.out.println("girl smile()…"); } } class MMGirl extends Girl{ @Override public void smile() { System.out.println("MMirl smile sounds sweet…"); } public void c(){ System.out.println("MMirl c()…"); } } class Main{ public static void main(String[] args) { Girl g1=new MMGirl(); //向上轉型 g1.smile(); MMGirl mmg=(MMGirl)g1; //向下轉型,編譯和運行皆不會出錯 mmg.smile(); mmg.c(); Girl g2=new Girl(); // MMGirl mmg1=(MMGirl)g2; //不安全的向下轉型,編譯無錯但會運行會出錯 // mmg1.smile(); // mmg1.c(); /*output: * CGirl smile sounds sweet… * CGirl smile sounds sweet… * CGirl c()… * Exception in thread "main" java.lang.ClassCastException: com.wensefu.other1.Girl * at com.wensefu.other1.Main.main(Girl.java:36) */ if(g2 instanceof MMGirl){ MMGirl mmg1=(MMGirl)g2; mmg1.smile(); mmg1.c(); } } }

Girl g1=new MMGirl(); //向上轉型  g1.smile();  MMGirl mmg=(MMGirl)g1; //向下轉型,編譯和運行皆不會出錯

這里的向下轉型是安全的。因為 g1 指向的是子類對象。

Girl g2=new Girl();  MMGirl mmg1=(MMGirl)g2; //不安全的向下轉型,編譯無錯但會運行會出錯

運行出錯:

Exception in thread "main" java.lang.ClassCastException: com.wensefu.other1.Girl      at com.wensefu.other1.Main.main(Girl.java:36)

如代碼所示,可以通過 instanceof 來防止出現異常。

贊(0)
分享到: 更多 (0)
?
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
久久精品五月,日韩不卡视频在线观看,国产精品videossex久久发布 ,久久av综合
日韩精品成人| 7m精品国产导航在线| 日韩精品一卡二卡三卡四卡无卡| 成人在线免费观看网站| 国产精区一区二区| 国产精品一区2区3区| 欧美日韩夜夜| 日韩精品一区第一页| 免费日韩av片| 亚洲精品美女91| 欧美啪啪一区| 久久久久亚洲精品中文字幕| 久久久精品国产**网站| 国产999精品在线观看| 丝袜av一区| 亚洲精品中文字幕乱码| 久久午夜视频| 国产精品66| 久久国产日韩| 黑丝一区二区三区| 日韩黄色在线观看| 国产精品毛片久久久| 国产精品亚洲成在人线| 精品一区视频| 亚洲免费在线| 精品一区二区三区中文字幕| 亚洲国内精品| 日韩激情综合| 精品日韩视频| 亚久久调教视频| 伊人网在线播放| 亚洲欧美日本国产| 国产一二在线播放| 在线精品国产亚洲| 欧美日韩免费看片| 国产精品日本一区二区不卡视频| 国产情侣久久| 国精品产品一区| 亚洲少妇诱惑| 国产精品欧美在线观看| 激情亚洲影院在线观看| 在线国产日韩| 国产盗摄——sm在线视频| 热久久久久久久| 成人精品天堂一区二区三区| 日韩av一区二区三区| 亚洲精品一区二区在线看| 麻豆91精品91久久久的内涵| 亚洲视频二区| 欧美成人午夜| 国产伦久视频在线观看| 欧美日韩亚洲一区二区三区在线 | 亚洲深爱激情| 久久狠狠婷婷| 日韩一区三区| 亚洲黄色免费看| 成人在线视频区| 国产一区精品福利| 美女高潮久久久| 国产精品任我爽爆在线播放 | 国产精品一区二区三区美女| 国产在线不卡| 欧美日韩一二三四| 中文在线资源| 亚洲最新无码中文字幕久久| 久久99国产精品视频| 国产精品久久| 精品三级国产| 欧美日韩国产观看视频| 樱桃视频成人在线观看| 欧美aa一级| 亚洲二区视频| 影音国产精品| 丝袜美腿成人在线| 一本综合精品| 国产欧美三级| 国产午夜精品一区在线观看| 欧美三级第一页| 久久亚洲人体| 999视频精品| 婷婷激情综合| 91福利精品在线观看| 国产精品一区二区三区av麻| 久久wwww| 999国产精品视频| 在线日韩成人| 免费看久久久| 亚洲高清av| 日韩精品亚洲专区| 成人污污视频| 国产亚洲毛片在线| 亚洲一区二区小说| 久久成人福利| 亚洲精品在线观看91| 日韩黄色av| 日韩在线综合| 日本成人中文字幕在线视频| 成人国产精品久久| 蜜桃久久精品一区二区| 久久精品国产99国产精品| 黄色在线一区| 久久在线91| 蜜桃免费网站一区二区三区| 国产一区二区三区探花| 中文亚洲免费| 最新中文字幕在线播放 | 日本a级不卡| 激情久久五月| 精品日韩在线| 日韩精品五月天| 亚洲一级高清| 国产激情精品一区二区三区| 欧美日韩国产免费观看视频| 久久激五月天综合精品| 久久国产亚洲| 国产精品流白浆在线观看| 免费观看不卡av| 麻豆视频久久| 亚洲精品激情| 国产韩日影视精品| 成人看片网站| 日韩av在线中文字幕| 你懂的国产精品| 日本一区中文字幕| 免费欧美一区| 香蕉久久精品| 99久久亚洲精品蜜臀| 日韩不卡一区| 久久国产精品色av免费看| 丝袜国产日韩另类美女| 免费成人在线观看| 精品一区欧美| 在线看片国产福利你懂的| 91成人小视频| 亚洲天堂日韩在线| 免费成人性网站| 石原莉奈在线亚洲二区| 免费不卡中文字幕在线| 亚洲www啪成人一区二区| 国产在线观看www| 国产精品99久久精品| 久久av日韩| 亚洲三级欧美| 欧美性感美女一区二区| 免费亚洲一区| 国产拍在线视频| 999久久久亚洲| 喷白浆一区二区| 深夜福利亚洲| 久久av国产紧身裤| 另类中文字幕国产精品| 欧美1区免费| 亚洲欧美日本国产| 欧美国产日韩电影| 一区二区精品伦理...| jiujiure精品视频播放| 国产一区二区高清| 欧美精品三级在线| 日韩欧美一区二区三区免费观看| 中文一区在线| 国产精品地址| 女同性一区二区三区人了人一 | 久久麻豆视频| 亚洲国内欧美| 国产探花一区在线观看| 欧美成人a交片免费看| 中文一区一区三区免费在线观| 国产欧美久久一区二区三区| 日韩欧美网址| 日韩精品第一| 久久蜜桃av| 国产麻豆一区| 国产综合亚洲精品一区二| 亚洲精品伊人| 免费欧美一区| 麻豆国产精品| 亚洲一区二区三区高清| 荡女精品导航| 天堂av一区| 精精国产xxxx视频在线野外 | 亚洲天堂1区| 国产乱人伦精品一区| 蜜桃免费网站一区二区三区| 国产精品99一区二区| 久久亚洲风情| 麻豆精品蜜桃视频网站| 在线精品福利| 99热精品在线| 国产一区二区三区日韩精品| 蜜臀a∨国产成人精品| 激情欧美日韩一区| 人人草在线视频| 久久精品国产福利| 国产精品久久久久久久久久妞妞| 亚洲一区二区日韩| 一区二区国产在线| 伊人久久一区| 亚洲乱码久久| 日韩精品视频在线看| 视频一区二区三区中文字幕|