最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

一文詳解Java抽象類到底有多抽象

 更新時間:2022年06月22日 15:51:00   作者:蘿詩粉  
這篇文章主要介紹了一文詳解Java抽象類到底有多抽象,抽象方法所在的類必須是抽象類,子類若繼承了一個抽象類,就必須覆寫父類的所有抽象方法,這里的子類是普通類,是強制要求覆寫所有抽象方法,但是如果子類也是一個抽象類,那么就可以不覆寫

抽象類

1.引出抽象類

向上轉(zhuǎn)型帶來的最大的好處就是參數(shù)統(tǒng)一化,使用共同的父類引用,就可以接收所有的子類實例。

多態(tài)非常依賴方法覆寫,但是子類可以選擇性的覆寫父類的方法,若需要強制要求子類覆寫方法,就會用到抽象類
其實顯示生活中就有很多的抽象類,這些類都是概念化的,沒法具體到某個實例,但是能描述這一類對象的共同屬性和方法,比如人類,就沒法具體到某一類人,世界上有很多類人,中國人,美國人等等,這很多類人,具有的屬性和方法都大致相同,但是都沒辦法具化,所以人類就是一個抽象類

2.認(rèn)識抽象類

概念:

抽象類:使用abstract聲明的類,抽象類是普通類的“超集”,普通類有的,抽象類都有,只是多了一些抽象方法而已,抽象方法所在的類必須是抽象類,子類若繼承了一個抽象類,就必須覆寫父類的所有抽象方法,這里的子類是普通類,是強制要求覆寫所有抽象方法,但是如果子類也是一個抽象類,那么就可以不覆寫。

abstract關(guān)鍵字

在Java中,定義一個抽象方法或者抽象類使用abstract關(guān)鍵字
1.抽象方法所在的類必須使用abstract聲明為抽在哪個類。
抽象方法是指使用abstract聲明,只有函數(shù)聲明,沒有方法體(“{ }”)的方法

但是如果說,在Java中,沒有方法體的方法就是抽象方法,這就是錯誤的,因為在在Java中本地方法native()也沒有方法體,但是不是抽象方法

本地方法,不是抽象方法,這個方法由JVM實現(xiàn),而JVM是由c++寫的,本地方法就是指調(diào)用了c++中的同名方法。
2.若一個類使用了abstract聲明為抽象類,無法直接通過該類產(chǎn)生對象,哪怕該類中一個抽象方法都沒有當(dāng)一個類是抽象類,不管有沒有抽象方法,這個類本身就是一個抽象的概念,無法具體到某個特定的實例的,只能通過子類向上轉(zhuǎn)型變?yōu)槌橄蟾割惖囊?/strong>

人類抽象:

Person per = new Person();//error
Person per = new China(); //OK

在IDEA中抽象類和普通類的圖標(biāo)也是不一樣的:

3.子類繼承了抽象類,就必須強制子類覆寫抽象類中的所有抽象方法(子類是抽象類除外),也滿足單繼承局限,一個子類只能繼承一個抽象類

如果B覆寫了A的抽象方法,那么C就可以不用再覆寫A的抽象方法;如果B沒有覆寫A的抽象方法,那么C就要覆寫A和B 的所有抽象方法。

4.抽象類是普通類的超集(普通類有的內(nèi)容,抽象類全都有),只是比普通類多了一些抽象方法而已,抽

象類雖然無法直接實例化對象,但是也可以存在構(gòu)造方法,子類在實例化對象時,也是默認(rèn)先調(diào)用父類(抽象類)的構(gòu)造方法,而后調(diào)用子類的構(gòu)造方法

若一個需求既可以使用抽象類,也可以使用接口,我們優(yōu)先選擇接口,因為抽象類仍然時單繼承局限,而一個類可以實現(xiàn)多個接口

接口

1.抽象類和接口的區(qū)別

1.抽象類:抽象類沒辦法直接實例化對象,但是子類仍然滿足is a 原則,子類和抽象父類之間仍然滿足“繼承樹”的關(guān)系
Person 對于 China
Sharp 對于Cycle
這樣只有滿足了繼承樹的關(guān)系才能使用抽象類,這樣有局限性,而且抽象類有單繼承局限,一個子類只能繼承一個抽象父類
2.接口:接口中只有抽象方法和全局常量,其他東西統(tǒng)統(tǒng)沒有,這是一個比抽象類更加純粹的抽象概念,實現(xiàn)接口時,是一個混合的關(guān)系,不用滿足is a關(guān)系,只要子類具備這種能力或者行為就可以繼承該接口,一個子類可以繼承多個接口

2.認(rèn)識接口

概念:

接口使用關(guān)鍵字interface聲明,子類使用implements實現(xiàn)接口,接口中只有抽象方法和全局常量,其他的統(tǒng)統(tǒng)沒有,普通方法和構(gòu)造方法等等,在接口里全部都沒有

接口表示的場景:

一般來說,接口的使用表示兩種場景
1.接口表示具備某種能力/行為,子類實現(xiàn)接口時,不是is a 關(guān)系,而是具備這種行為或者能力
“游泳” – > 能力或者行為
Person滿足游泳接口
Dog 也滿足游泳接口
Duck也滿足游泳接口
2.接口表示一種規(guī)范或者標(biāo)準(zhǔn),“USB接口”,5G標(biāo)準(zhǔn)

3.具體實現(xiàn)

USB接口

使用interface聲明一個USB接口,USB接口表示一種規(guī)范,只要滿足USB接口這個規(guī)范都可以實現(xiàn)這個接口,鼠標(biāo),鍵盤,攝像頭,打印機,這些都滿足USB接口的規(guī)范(都有USB插口)

子類使用implements實現(xiàn)接口,必須覆寫所有的抽象方法

而電腦這個類不是USB接口的子類,電腦叫做USB規(guī)范的使用者,所有帶有USB線插入到電腦的設(shè)備都應(yīng)該滿足USB的規(guī)范

對于電腦的生產(chǎn)者來說,根本不需要關(guān)心到底哪個具體的設(shè)備插入到電腦中,只要這個設(shè)備滿足了USB接口,就能夠被電腦識別,就可以實現(xiàn)一個接口可以接收無數(shù)種設(shè)備,只要這個設(shè)備滿足USB接口,都可以插入到電腦且被電腦識別。
如果fun(Mouse mouse) — > 這個插口只能識別鼠標(biāo),其他設(shè)備都識別不了,那么電腦想接收其他設(shè)備,電腦上就得有該設(shè)備獨有插口,很多種設(shè)備,那電腦上就全是接口了,所有這就是接口表示一種規(guī)范的帶來的方便,只需要一個插口,只要滿足USB插口的規(guī)范,就可以被電腦接收識別

此時不管擴展多少個設(shè)備,fun方法一行代碼都不會變
開閉原則:程序?qū)U展開放,對修改關(guān)閉,這是所有設(shè)計模式的核心思想

接口表示能力

接口允許多實現(xiàn),一個類可以具備多種能力,同時實現(xiàn)多個父接口,若子類是普通類,需要覆寫所有的抽象方法

子類同時實現(xiàn)多個父接口,中間使用“ , ”分隔

由于接口中只有抽象方法和全局常量,所以接口中
public abstract – >抽象方法
sattic final – >常量
這些關(guān)鍵字全都可以省略不寫,只用保留最核心的方法返回值,方法參數(shù)列表,方法名稱即可

到此這篇關(guān)于一文詳解Java抽象類到底有多抽象的文章就介紹到這了,更多相關(guān)Java抽象類內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • hadoop運行java程序(jar包)并運行時動態(tài)指定參數(shù)

    hadoop運行java程序(jar包)并運行時動態(tài)指定參數(shù)

    這篇文章主要介紹了hadoop如何運行java程序(jar包)并運行時動態(tài)指定參數(shù),使用hadoop 運行 java jar包,Main函數(shù)一定要加上全限定類名,需要的朋友可以參考下
    2021-06-06
  • java跳出循環(huán)的三種方式總結(jié)(break語句、continue語句和return語句)

    java跳出循環(huán)的三種方式總結(jié)(break語句、continue語句和return語句)

    在實際編程中,有時需要在條件語句匹配的時候跳出循環(huán),下面這篇文章主要給大家介紹了關(guān)于java跳出循環(huán)的三種方式,其中包括break語句、continue語句和return語句的相關(guān)資料,需要的朋友可以參考下
    2023-03-03
  • 關(guān)于Java從本地文件復(fù)制到網(wǎng)絡(luò)文件上傳

    關(guān)于Java從本地文件復(fù)制到網(wǎng)絡(luò)文件上傳

    這篇文章主要介紹了關(guān)于Java從本地文件復(fù)制到網(wǎng)絡(luò)文件上傳,File?和?IO?流其實是很相似的,都是將文件從一個地方轉(zhuǎn)移到另一個地方,這也是流的特點之一,需要的朋友可以參考下
    2023-04-04
  • spring task @Scheduled注解各參數(shù)的用法

    spring task @Scheduled注解各參數(shù)的用法

    這篇文章主要介紹了spring task @Scheduled注解各參數(shù)的用法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • Spring Boot使用模板引擎JSP實例解析

    Spring Boot使用模板引擎JSP實例解析

    這篇文章主要介紹了Spring Boot使用模板引擎JSP實例解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-10-10
  • java開源區(qū)塊鏈jdchain入門

    java開源區(qū)塊鏈jdchain入門

    這篇文章主要介紹了java開源區(qū)塊鏈jdchain入門,文中為大家講解了關(guān)于部署及組件遇到的一些問題,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步
    2022-02-02
  • 分析jackjson的安全漏洞CVE-2019-14379

    分析jackjson的安全漏洞CVE-2019-14379

    這篇文章主要介紹了jackjson的使用及CVE-2019-14379漏洞分析,ackson知識點序列化和反序列化,setName和getName調(diào)用順序,通過實例代碼講解的很詳細(xì),需要的朋友可以參考下
    2021-06-06
  • Java實現(xiàn)給Word文件添加文字水印

    Java實現(xiàn)給Word文件添加文字水印

    Word中設(shè)置水印時,可預(yù)設(shè)的文字或自定義文字設(shè)置為水印效果,但通常添加水印效果時,會對所有頁面都設(shè)置成統(tǒng)一效果。本文將利用Java給Word每一頁設(shè)置不同文字水印效果,需要的可以參考一下
    2022-02-02
  • Java?web實現(xiàn)頭像上傳以及讀取顯示

    Java?web實現(xiàn)頭像上傳以及讀取顯示

    這篇文章主要為大家詳細(xì)介紹了Java?web實現(xiàn)頭像上傳以及讀取顯示,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • IDEA創(chuàng)建SpringBoot的maven項目的方法步驟

    IDEA創(chuàng)建SpringBoot的maven項目的方法步驟

    這篇文章主要介紹了IDEA創(chuàng)建SpringBoot的maven項目的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04

最新評論

巴彦淖尔市| 牟定县| 嫩江县| 安岳县| 肇州县| 久治县| 绵阳市| 萍乡市| 盐津县| 始兴县| 遂川县| 荔波县| 蓬莱市| 游戏| 察隅县| 苍溪县| 五常市| 洞口县| 晋城| 赣州市| 汽车| 永福县| 五寨县| 资兴市| 平顺县| 河津市| 平舆县| 天水市| 抚远县| 丹东市| 招远市| 富阳市| 渝北区| 霞浦县| 普洱| 营口市| 新沂市| 仙桃市| 荔浦县| 景泰县| 阳江市|