<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Java基礎(chǔ)入門之多態(tài)和對象類型轉(zhuǎn)換

          共 3229字,需瀏覽 7分鐘

           ·

          2021-01-18 15:10

          點(diǎn)擊上方“Java進(jìn)階學(xué)習(xí)交流”,進(jìn)行關(guān)注

          后臺回復(fù)“Java”即可獲贈Java學(xué)習(xí)資料

          人隨沙岸向江村,余亦乘舟歸鹿門。

          ????前面幾篇文章用Java帶大家一起了解Java的部分基礎(chǔ)知識,感興趣的小伙伴們可以去學(xué)習(xí)下了,一篇文章帶你了解Java類的設(shè)計(jì)和封裝及類成員的訪問控制、一篇文章帶你了解this關(guān)鍵字和單例模式Java基礎(chǔ)入門篇——面向?qū)ο蠛皖惖亩x,這篇文章帶大家一起學(xué)習(xí)下Java知識中的接口及其繼承知識,一起來看看吧。


          一、多態(tài)

          1.假設(shè)實(shí)現(xiàn)一個(gè)動物發(fā)出的叫聲方法,我們知道不同的動物,它們的叫聲是不一樣的。當(dāng)在方法中傳入一個(gè)參數(shù)類型,例如貓的叫聲、狗的叫聲。在同一個(gè)方法,當(dāng)參數(shù)不同它們的執(zhí)行結(jié)果各不相同,這就是多態(tài)。

          2.多態(tài)是把子類對象賦給父類引用時(shí),調(diào)用重寫的方法時(shí),表示的是子類的行為。

          3.怎么實(shí)現(xiàn)多態(tài)例子

          //定義接口Fruitinterface Fruit{    void info();//定義抽象方法info()}//定義Cherry類實(shí)現(xiàn)Fruit接口class Cherry implements Fruit{    double weight=66;//weight屬性為重量    //實(shí)現(xiàn)info()方法    public void info(){        System.out.println("我是一個(gè)櫻桃!"+"重量為:"+weight+"g");  }}//定義Apple類實(shí)現(xiàn)Fruit接口class Apple implements Fruit{    double weight=250;//weight屬性為重量    //實(shí)現(xiàn)info()方法    public void info(){        System.out.println("我是一個(gè)蘋果!"+"重量為:"+weight+"g");  }}public class p30 {    public static void main(String[] args) {        // TODO Auto-generated method stub        Fruit f1=new Cherry();//創(chuàng)建Cherry對象,F(xiàn)ruit類型變量f1引用        Fruit f2=new Apple();//創(chuàng)建Apple對象,F(xiàn)ruit類型變量f2引用        fruitInfo(f1);//調(diào)用fruitInfo()方法,把f1參數(shù)傳入        fruitInfo(f2);//調(diào)用fruitInfo()方法,把f2參數(shù)傳入}    //定義靜態(tài)的fruitInfo()方法,接受一個(gè)Fruit的參數(shù)f    public static void fruitInfo(Fruit f){        f.info();  }}

          運(yùn)行的結(jié)果是:

          我是一個(gè)櫻桃!重量為:66.0g我是一個(gè)蘋果!重量為:250.0g

          從上面代碼中,定義了一個(gè)Fruit接口,定義了抽象方法info()。定義Cherry類和Apple類實(shí)現(xiàn)Fruit接口,定義變量weight屬性和實(shí)現(xiàn)info()方法?!癋ruit f1=new Cherry()、Fruit f2=new Apple()”實(shí)現(xiàn)子類對象賦給父類引用,調(diào)用fruitInfo()方法,父類引用了兩個(gè)子類對象分別傳入f1和f2參數(shù)。


          二、對象類型轉(zhuǎn)換

          1.子類對象是可以自動轉(zhuǎn)換成父類。

          2.父類轉(zhuǎn)換成子類對象就需要強(qiáng)制轉(zhuǎn)換。

          例如:

          //定義接口Fruitinterface Fruit{    void info();//定義抽象方法info()}//定義Cherry類實(shí)現(xiàn)Fruit接口class Cherry implements Fruit{    double weight=66;//weight屬性為重量    //實(shí)現(xiàn)info()方法    public void info(){        System.out.println("我是一個(gè)櫻桃!"+"重量為:"+weight+"g");}    //定義pro()方法    void pro(){        System.out.println("產(chǎn)地:浙江");  }}public class p31 {    public static void main(String[] args) {        // TODO Auto-generated method stub        Fruit f1=new Cherry();//創(chuàng)建Cherry類的實(shí)例對象        fruitInfo(f1);//調(diào)用fruitInfo()方法,把f1參數(shù)傳入}    //定義靜態(tài)方法fruitInfo(),接受一個(gè)Fruit參數(shù)f    public static void fruitInfo(Fruit f){        f.info();//調(diào)用傳入?yún)?shù)f的info()方法        f.pro();//調(diào)用傳入?yún)?shù)f的pro()方法  }}

          運(yùn)行的結(jié)果是:

          從上面可以看出編譯出錯(cuò)了,調(diào)用fruitInfo()方法傳入Cherry對象,方法參數(shù)是Fruit類型的,把Cherry的子類當(dāng)作父類使用導(dǎo)致程序編譯出現(xiàn)錯(cuò)誤,程序在運(yùn)行到f.pro()這行代碼發(fā)現(xiàn)這個(gè)方法沒有定義。因?yàn)閭魅氲氖荂herry類,在Cherry類中定義了pro()方法需要強(qiáng)制轉(zhuǎn)換才可以運(yùn)行,就是把Fruit類型變量強(qiáng)制轉(zhuǎn)換成Cherry類型。

          修改后代碼如下所示:

          //定義靜態(tài)方法fruitInfo(),接受一個(gè)Fruit參數(shù)f    public static void fruitInfo(Fruit f){        Cherry f1=(Cherry)f;        f1.info();//調(diào)用傳入?yún)?shù)f的info()方法        f1.pro();//調(diào)用傳入?yún)?shù)f的pro()方法}

          再次運(yùn)行的結(jié)果是:

          我是一個(gè)櫻桃!重量為:66.0g產(chǎn)地:浙江


          三、instanceof關(guān)鍵字

          1.instanceof關(guān)鍵字作用

          判斷一個(gè)實(shí)例對象是否屬于一個(gè)類,它的語法如下:

          對象 instanceof

          2.在進(jìn)行引用類型轉(zhuǎn)換前先使用instanceof關(guān)鍵字判斷,例如:

          if( f instanceof Cherry){   //如果f指的是Cherry對象類型時(shí),返回的是true。    Cherry f1=(Cherry)f;}


          四、總結(jié)

          本文主要介紹了多態(tài)、對象類型轉(zhuǎn)換、instanceof關(guān)鍵字。

          多態(tài)是子類對象賦給父類引用時(shí),調(diào)用重寫的方法時(shí),表示的是子類的行為。通過怎么實(shí)現(xiàn)多態(tài)例子幫助理解這個(gè)用法。

          對象類型轉(zhuǎn)換是子類對象是可以自動轉(zhuǎn)換成父類、父類轉(zhuǎn)換成子類對象就需要強(qiáng)制轉(zhuǎn)換。

          instanceof關(guān)鍵字用來判斷一個(gè)實(shí)例對象是否屬于一個(gè)類,希望大家通過本文的學(xué)習(xí),對你有所幫助!

          -------------------?End?-------------------

          往期精彩文章推薦:

          歡迎大家點(diǎn)贊,留言,轉(zhuǎn)發(fā),轉(zhuǎn)載,感謝大家的相伴與支持

          想加入Java學(xué)習(xí)群請?jiān)诤笈_回復(fù)【入群

          萬水千山總是情,點(diǎn)個(gè)【在看】行不行

          瀏覽 32
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  天天操天天插天天干 | 久久网一区 | 人人做人人爱,人人操 | 青青草精品 | 操屄屄视频 |