Java-抽象類

抽象類的概念

普通類是一個(gè)完善的功能類,可以直接產(chǎn)生實(shí)例化對(duì)象,并且在普通類中可以包含有構(gòu)造方法、普通方法、static方法、常量和變量等內(nèi)容。而抽象類是指在普通類的結(jié)構(gòu)里面增加抽象方法的組成部分。

什么叫抽象方法?
在所有的普通方法上面都會(huì)有一個(gè)"{}",這個(gè)表示方法體,有方法體的方法一定可以被對(duì)象直接使用。而抽象方法,是指沒(méi)有方法體的方法,同時(shí)抽象方法還必須使用關(guān)鍵字abstract做修飾

擁有抽象方法的類就是抽象類,抽象類要使用abstract關(guān)鍵字聲明。

定義一個(gè)抽象類

abstract class A {
      public void fun(){  
            System.out.println("hello java!");
      }

      public abstract void print();//抽象方法,沒(méi)有方法體
}
抽象類的使用

抽象類無(wú)法直接進(jìn)行實(shí)例化操作。
原因:當(dāng)一個(gè)類實(shí)例化之后,就意味著這個(gè)對(duì)象可以可以調(diào)用類中的屬性或者方法了,但是在抽象類里存在抽象方法,而抽象方法沒(méi)有方法體,沒(méi)有方法體就無(wú)法進(jìn)行調(diào)用。既然無(wú)法進(jìn)行調(diào)用,就無(wú)法產(chǎn)生實(shí)例化對(duì)象。

抽象類的使用原則
1.抽象方法必須為public或者protected (因?yàn)槿绻麨閜rivate ,則不能被子類繼承,子類便無(wú)法實(shí)現(xiàn)該方法)。
2.抽象類不能直接實(shí)例化,需要依靠子類采用向上轉(zhuǎn)型的方式處理。
3.抽象類必須有子類,使用extends繼承,一個(gè)子類只能繼承一個(gè)抽象類
4.子類(如果不是抽象類)則必須覆寫(xiě)抽象類之中的全部抽象方法(如果子類沒(méi)有實(shí)現(xiàn)父類的抽象方法,則必須將子類也定義為abstract類)

抽象類的使用限制

1.抽象類中有構(gòu)造方法嗎?
由于抽象類里會(huì)存在一些屬性,那么抽象類中一定存在構(gòu)造方法,其存在目的是為了屬性的初始化。
并且子類對(duì)象實(shí)例化的時(shí)候,依然滿足先執(zhí)行父類構(gòu)造,再執(zhí)行子類構(gòu)造順序。

2.抽象類可以用final聲明嗎?
不能,因?yàn)槌橄箢惐仨氂凶宇悾鴉inal定義的類不能有子類

3.抽象類能否使用static聲明?
外部類不允許使用static聲明,而內(nèi)部類的抽象運(yùn)行使用static聲明。使用static聲明的內(nèi)部抽象類相當(dāng)于一個(gè)外部抽象類,繼承的時(shí)候使用“外部類.內(nèi)部類”的形式表示類名稱。

4.可以直接調(diào)用抽象類中的static聲明的方法嗎?
任何時(shí)候,如果要執(zhí)行類中的static方法的時(shí)候,都可以再?zèng)]有對(duì)象的情況下直接調(diào)用,對(duì)于抽象類也一樣。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 抽象方法: 在所有的普通方法上面都會(huì)有一個(gè)“{}”,這個(gè)表示方法體,有方法體的方法一定可以被對(duì)象直接使用。 而抽象...
    呱呱_閱讀 31,739評(píng)論 4 7
  • 目的 學(xué)習(xí): 1.抽象類的定義 2.抽象類的規(guī)則 3.接口的使用 技術(shù)及其使用 一.抽象類 所有的對(duì)象都是通過(guò)類來(lái)...
    W1NFRED閱讀 248評(píng)論 0 0
  • 在面向?qū)ο蟮母拍钪校械膶?duì)象都是通過(guò)類來(lái)描繪的,但是反過(guò)來(lái),并不是所有的類都是用來(lái)描繪對(duì)象的,如果一個(gè)類中沒(méi)有包...
    南風(fēng)_001閱讀 315評(píng)論 0 0
  • 對(duì)于面向?qū)ο缶幊虂?lái)說(shuō),抽象是它的一大特征之一。在Java中,可以通過(guò)兩種形式來(lái)體現(xiàn)OOP的抽象:接口和抽象類。接口...
    Q南南南Q閱讀 428評(píng)論 0 3
  • 樓蘭的云閱讀 211評(píng)論 0 0

友情鏈接更多精彩內(nèi)容