国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

多態(tài)入門請(qǐng)不要放棄

fai1017 / 2482人閱讀

摘要:多態(tài)的基本認(rèn)識(shí)概述多態(tài)是同一個(gè)行為具有多個(gè)不同表現(xiàn)形式或形態(tài)的能力。多態(tài)的好處可以使程序有良好的擴(kuò)展,并可以對(duì)所有類的對(duì)象進(jìn)行通用處理。

3.1多態(tài)的基本認(rèn)識(shí) 概述:多態(tài)是同一個(gè)行為具有多個(gè)不同表現(xiàn)形式或形態(tài)的能力。

如下圖:黑白打印機(jī)和彩色打印機(jī)相同的打印行為卻有著不同的打印效果

前提:

·有繼承關(guān)系

·有方法重寫(抽象方法)

·有父類引用指向子類對(duì)象

格式:
parent p = new Chile();

把子的對(duì)象賦值給父

當(dāng)使用多態(tài)方式調(diào)用方法時(shí),首先檢查父類中是否有該方法,如果沒有,則編譯錯(cuò)誤;如果有,再去調(diào)用子類的同名方法。

多態(tài)的好處:可以使程序有良好的擴(kuò)展,并可以對(duì)所有類的對(duì)象進(jìn)行通用處理。

3.2 多態(tài)中的成員訪問方法
Fu f = new zi;

我們按照上面給出格式來(lái)寫一段代碼(Zi繼承Fu類)

A:成員變量

編譯看左邊,運(yùn)行看左邊

B:構(gòu)造方法

創(chuàng)建子類對(duì)象的時(shí)候,訪問父類的構(gòu)造方法,對(duì)父類的數(shù)據(jù)進(jìn)行初化

C;成員方法

編譯看左邊,運(yùn)行看右邊

D;靜態(tài)方法

編譯看左邊,運(yùn)行看右邊

看左邊即在左邊即父類中尋找,看右邊即在子類中尋找

3.3 多態(tài)的好處和弊端 多態(tài)的好處:

A:提高了代碼的維護(hù)性(繼承保護(hù))

B:提高了代碼的擴(kuò)展性(由多態(tài)保證)

Eg:例如一個(gè)程序中 狗 貓 豬 都繼承于動(dòng)物類(Eg:AnimalTool)

分別寫出對(duì)應(yīng)的行為方法(Eg:eat() )

而將調(diào)用動(dòng)物功能的代碼 寫入動(dòng)物操作工具類

但是添加新的動(dòng)物時(shí),每次都需要修改工具類

為了優(yōu)化代碼,將工具類中 每一個(gè)動(dòng)物的操作代碼名字

寫為動(dòng)物總稱,添加新動(dòng)物后,只需要在Demo中創(chuàng)建 新動(dòng)物的對(duì)象 然后直接調(diào)用這個(gè)總的動(dòng)物操作工具類

class Animal {
    public void eat() {
        System.out.println("eat");
    }
}

class Dog extends Animal {
    public void eat() {
        System.out.println("狗吃肉");
    }
}

class Cat extends Animal {
    public void eat() {
        System.out.println("貓吃肉");
    }
}


class AnimalTool {
    private AnimalTool() {}
    
    //調(diào)用貓的功能
    public static void useCat(Cat c) {
        c.eat();
    }
    
    //調(diào)用狗的功能
    public static void useDog(Dog d) {
        d.eat();
    }
    
    //把所有的可能都?xì)w為動(dòng)物類
    public static void useAnimal(Animal a) {
        a.eat(); //還可以寫其他方法
    }
}
public class DuoTaiDemo {
    public static void main(String[] args) {
        
        /*
         * 直接創(chuàng)對(duì)象調(diào)用對(duì)應(yīng)方法
         */
        
        //我養(yǎng)了一只狗
        Dog d = new Dog();
        d.eat();
        
        //我又養(yǎng)了一只狗
        Dog d2 = new Dog();
        d2.eat();
        
        
        /*
         * 創(chuàng)對(duì)象、使用動(dòng)物操作類調(diào)用對(duì)應(yīng)方法()
         */
        Dog d3 = new Dog();
        Dog d4 = new Dog();
        AnimalTool.useDog(d3);
        AnimalTool.useDog(d4);
        
        //我喜歡貓
        //定義一個(gè)豬類,它要繼承自動(dòng)物,提一個(gè)eat()方法
        //并且還得再工具類中添加該類方法的調(diào)用(即類似前面useDog())這樣無(wú)疑很麻煩
        
        Cat c = new Cat();
        Cat c2= new Cat();
        AnimalTool.useCat(c);
        AnimalTool.useCat(c2);
        
        //推薦使用多態(tài)
        AnimalTool.useAnimal(c);
        AnimalTool.useAnimal(c2);
    }
多態(tài)的弊端:

A:不能使用子類的特有功能

如果想使用:

·創(chuàng)建子類對(duì)象調(diào)用方法即可(可以但是很多時(shí)候不合理,而且太占內(nèi)存)

·把父類的引用強(qiáng)制轉(zhuǎn)換為子類的引用(向下轉(zhuǎn)型)

對(duì)象間的轉(zhuǎn)型問題:

向上轉(zhuǎn)型:

Fu f = new Zi();

向下轉(zhuǎn)型:

Zi z = (Zi)f; //要求f必須能夠轉(zhuǎn)為Zi

class Fu {
    public void show() {
        System.out.println("show Fu");
    }
}

class Zi {
    public void show() {
        System.out.println("show Zi");
    }
    
    public void method() {
        System.out.println("method Zi");
    }
}

class DuoTaiDemo2 {
    public static void main(String[] args) {
        Fu fu = new Zi();
        fu.show();
        //fu.method(); 錯(cuò)誤,不能使用子類特有功能
        
        //通過轉(zhuǎn)型可以使用子類特有功能
        
        //創(chuàng)建子類對(duì)象
        //可以但是不推薦
        Zi zi = new Zi();
        zi.show();
        zi.method();
        
        //要求f必須能夠轉(zhuǎn)為Zi
        //推薦()
        Zi zi2 = (Zi)fu;
    }
}
結(jié)尾:

如果內(nèi)容中有什么不足,或者錯(cuò)誤的地方,歡迎大家給我留言提出意見, 蟹蟹大家 !^_^

如果能幫到你的話,那就來(lái)關(guān)注我吧!

在這里的我們素不相識(shí),卻都在為了自己的夢(mèng)而努力 ?

一個(gè)堅(jiān)持推送原創(chuàng)Java技術(shù)的公眾號(hào):理想二旬不止

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/74726.html

相關(guān)文章

  • Java入門請(qǐng)不要放棄,學(xué)習(xí)路線以及側(cè)重點(diǎn)分析

    摘要:而面向搜索引擎,就是我們要及時(shí)的使用百度谷歌遇到問題無(wú)法解決,先別急著放棄,可以去網(wǎng)絡(luò)尋找答案,你的坑大部分別人都已經(jīng)走過了,大部分都可以找到合適的解決方案。 showImg(https://segmentfault.com/img/remote/1460000019236352?w=866&h=456); 前言: ●眾多的語(yǔ)言,到底哪一門才是適合我的?●我們?yōu)槭裁匆獙W(xué)習(xí)Java語(yǔ)言呢...

    mochixuan 評(píng)論0 收藏0
  • 作為我的的第一門語(yǔ)言,學(xué)習(xí)Java時(shí)是什么感受?

    摘要:作為技術(shù)書籍或者視頻,講解一門語(yǔ)言的時(shí)候都是從最底層開始講解,底層的基礎(chǔ)有哪些呢首先是整個(gè),讓我們對(duì)這門語(yǔ)言先混個(gè)臉熟,知道程序的基本結(jié)構(gòu),順帶著還會(huì)說(shuō)一下注釋是什么樣子。 2018年新年剛過,就迷茫了,Java學(xué)不下去了,不知道從哪里學(xué)了。 那么多細(xì)節(jié)的東西,我根本記不住,看完就忘。 剛開始學(xué)習(xí)的時(shí)候熱情萬(wàn)丈,持續(xù)不了幾天就慢慢退去。 作為技術(shù)書籍或者視頻,講解一門語(yǔ)言的時(shí)候都是...

    isaced 評(píng)論0 收藏0
  • Reactjs、redux的從入門放棄、刪庫(kù)跑路示例

    摘要:我的入門到放棄之路最近看到很多相關(guān)的問題跟討論,越來(lái)越多的小伙伴喜歡這個(gè)框架了,同時(shí)也在看到了有些入門的小伙伴遇到了各種各樣的問題,本人也是框架使用都一枚,公司是騰訊阿里平安三巨頭合資的一家公司,分別上海深圳杭州北京廣州等多個(gè)分部,前端人員 showImg(https://segmentfault.com/img/bVbhonB?w=1278&h=722); 我的react入門到放棄之...

    Miracle 評(píng)論0 收藏0
  • STM32入門學(xué)習(xí)經(jīng)驗(yàn)總結(jié)

    摘要:嚴(yán)格地說(shuō),應(yīng)該是模仿實(shí)驗(yàn)。為什么覺得無(wú)從下手,看資料沒有頭緒經(jīng)驗(yàn)總結(jié)看資料需要計(jì)劃耐心和速度這里所謂的資料包括書籍文檔。建議有報(bào)銷條件的同學(xué)自己設(shè)計(jì)一塊板子學(xué)習(xí)。無(wú)法報(bào)銷的同學(xué),可以選購(gòu)一款開發(fā)板學(xué)習(xí)。 STM32系列基于專為要求高性能、低成本、低功耗的嵌入式應(yīng)用專門設(shè)計(jì)的ARMCortex...

    biaoxiaoduan 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<