抽象方法


抽象方法的概念

  抽象方法主要指不能具體實現的方法並且使用abstract關鍵字修飾,也就是沒有方法體。

具體格式如下:

  訪問權限 abstract 返回值類型 方法名(形參列表);

  public abstract void cry();

 

抽象類的概念

  抽象類主要指不能具體實例化的並且使用abstract關鍵字修飾,也就是不能創建的對象

 

抽象類和抽象方法的關系

  抽象類中可以有成員變量、構造方法、成員方法;

  抽象類中可以沒有抽象方法,也可以有抽象方法;

  擁有抽象方法的類必須是抽象類,因此真正意義上的抽象類應該是具有抽象方法並且使用

abstract關鍵字修飾的類。

 

為什么要求有抽象方法以后,AbstractTest這個類才是真正意義上的抽象類?

  抽象類中可以有抽象方法也可以沒有抽象方法,抽象類是不能實例化對象的,抽象類為什么不能new對象?

抽象類為什么不能new對象?是因為抽象類中可能有抽象方法,而抽象方法是沒有方法體的,調用抽象方法是沒有意義的,

為了避免程序員不小心去調用抽象方法,因為連對象都new不了那么就調用不了抽象方法。

 

案例1:抽象類與抽象方法

 抽象類的實際意義

  抽象類的實際意義不在於創建對象而在於被繼承。

  當一個類繼承抽象類后必須重寫抽象方法,否則該類也變成抽象類,也就是抽象類對子類具有強制性和規范性,

因此叫做模板設計模式

開發經驗分享:

  (注意:)如果在開發中必須要有某個方法,但是這個方法無法具體實現就可以把該方法寫成抽象方法,這個類就

變成抽象類。

  在以后的發開中推薦使用多態的格式,此時父類類型引用直接調用的所有方法一定是父類中擁有的方法,若以后

更換子類時,只需要將new關鍵字后面的子類類型修改而其他地方無需改變就可以立即生效,從而提高了代碼的可維護

性和可擴展性。

   該方式的缺點就是:父類引用不能直接調用子類獨有的方法,若調用則需要強制類型轉換。

 

案例2:實現抽象類

 

案例3:多態在抽象類中的優勢

 

   如果有一天我們想更換子類,我們只需要把new后面的類型更改,也就是在類名后面加一個2就可以了,后面的代碼不需要動

使用的就是Test2子類重寫的show方法

 

   需要更換子類的時候很方便,可維護性很強。

 

筆試考點:

1、private 和 abstract 關鍵字不能共同修飾一個方法

  子類不能繼承父類的原因只有兩個,一個是私有方法一個是構造方法;一旦方法標記成private子類不能繼承,不能繼承就不要

談重寫了,抽象方法不能被子類重寫,他自己又沒有方法體所以就沒有意義了。

2、final 和 abstract 關鍵字不能共同修飾一個方法

  final關鍵字修飾的方法不能被重寫可以被繼承,而抽象類指望被重寫才能使用

3、static 和 abstract 關鍵字不能共同修飾一個方法

  抽象類不能new對象,如果抽象類提升為類層級就可以使用類名.的方式使用方法,而抽象類是沒有方法體的,所以這樣相當於打

臉自己


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM