欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

一文詳解Java抽象類(lèi)到底有多抽象

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

抽象類(lèi)

1.引出抽象類(lèi)

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

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

2.認(rèn)識(shí)抽象類(lèi)

概念:

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

abstract關(guān)鍵字

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

但是如果說(shuō),在Java中,沒(méi)有方法體的方法就是抽象方法,這就是錯(cuò)誤的,因?yàn)樵谠贘ava中本地方法native()也沒(méi)有方法體,但是不是抽象方法

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

人類(lèi)抽象:

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

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

3.子類(lèi)繼承了抽象類(lèi),就必須強(qiáng)制子類(lèi)覆寫(xiě)抽象類(lèi)中的所有抽象方法(子類(lèi)是抽象類(lèi)除外),也滿(mǎn)足單繼承局限,一個(gè)子類(lèi)只能繼承一個(gè)抽象類(lèi)

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

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

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

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

接口

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

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

2.認(rèn)識(shí)接口

概念:

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

接口表示的場(chǎng)景:

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

3.具體實(shí)現(xiàn)

USB接口

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

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

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

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

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

接口表示能力

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

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

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

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

相關(guān)文章

  • 手寫(xiě)redis@Cacheable注解?參數(shù)java對(duì)象作為key值詳解

    手寫(xiě)redis@Cacheable注解?參數(shù)java對(duì)象作為key值詳解

    這篇文章主要介紹了手寫(xiě)redis@Cacheable注解?參數(shù)java對(duì)象作為key值詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • HttpClient詳細(xì)使用示例代碼

    HttpClient詳細(xì)使用示例代碼

    這篇文章主要介紹了HttpClient詳細(xì)使用示例,包括導(dǎo)入依賴(lài),使用工具類(lèi)的詳細(xì)代碼,代碼簡(jiǎn)單易懂,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-07-07
  • java修改JFrame默認(rèn)字體方式

    java修改JFrame默認(rèn)字體方式

    這篇文章主要介紹了java修改JFrame默認(rèn)字體方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • 基于線程池的工作原理與源碼解讀

    基于線程池的工作原理與源碼解讀

    下面小編就為大家分享一篇基于線程池的工作原理與源碼解讀,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2017-12-12
  • Java虛擬機(jī)內(nèi)存結(jié)構(gòu)及編碼實(shí)戰(zhàn)分享

    Java虛擬機(jī)內(nèi)存結(jié)構(gòu)及編碼實(shí)戰(zhàn)分享

    這篇文章主要介紹了Java虛擬機(jī)內(nèi)存結(jié)構(gòu)及編碼實(shí)戰(zhàn)分享,文章圍繞詳細(xì)主題展開(kāi)相關(guān)資料具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-04-04
  • Java實(shí)戰(zhàn)之郵件的撰寫(xiě)和發(fā)送

    Java實(shí)戰(zhàn)之郵件的撰寫(xiě)和發(fā)送

    這篇文章主要為大家詳細(xì)介紹了通過(guò)Java代碼實(shí)現(xiàn)郵件的撰寫(xiě)和發(fā)送功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,需要的小伙伴們可以學(xué)習(xí)一下
    2021-11-11
  • springboot 自定義權(quán)限標(biāo)簽(tld),在freemarker引用操作

    springboot 自定義權(quán)限標(biāo)簽(tld),在freemarker引用操作

    這篇文章主要介紹了springboot 自定義權(quán)限標(biāo)簽(tld),在freemarker引用操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-09-09
  • Java中Stream流Map分組方式詳細(xì)匯總

    Java中Stream流Map分組方式詳細(xì)匯總

    Stream將要處理的元素集合看作一種流,在流的過(guò)程中借助Stream?API對(duì)流中的元素進(jìn)行操作,比如篩選、排序、聚合等,下面這篇文章主要給大家介紹了關(guān)于Java中Stream流Map分組方式的相關(guān)資料,需要的朋友可以參考下
    2024-01-01
  • Java Socket實(shí)現(xiàn)猜數(shù)字小游戲

    Java Socket實(shí)現(xiàn)猜數(shù)字小游戲

    這篇文章主要為大家詳細(xì)介紹了Java Socket實(shí)現(xiàn)猜數(shù)字小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-09-09
  • Java使用Tessdata做OCR圖片文字識(shí)別的詳細(xì)思路

    Java使用Tessdata做OCR圖片文字識(shí)別的詳細(xì)思路

    這篇文章主要介紹了Java使用Tessdata做OCR圖片文字識(shí)別的詳細(xì)思路,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-07-07

最新評(píng)論