抽象
abstract關鍵字
使用格式
修飾符 abstract 返回值類型 方法名 (參數列表)
abstract class 類名字 { }
抽象方法
沒有方法體的方法
使用格式
修飾符 abstract 返回值類型 方法名 (參數列表)
public abstract void run();
抽象類
包含抽象方法的類
使用格式
abstract class 類名字 { }
public abstract class Animal {
public abstract void run();
}
使用
繼承抽象類的子類必須重寫父類所有的抽象方法。否則,該子類也必須聲明爲抽象類。
最終,必須有子類實現該父 類的抽象方法,否則,從最初的父類到最終的子類都不能創建對象,失去意義。
注意事項
-
抽象類不能創建對象,如果創建,編譯無法通過而報錯。只能創建其非抽象子類的對象。
理解:假設創建了抽象類的對象,調用抽象的方法,而抽象方法沒有具體的方法體,沒有意義。 -
抽象類中,可以有構造方法,是供子類創建對象時,初始化父類成員使用的。
理解:子類的構造方法中,有默認的super(),需要訪問父類構造方法。 -
抽象類中,不一定包含抽象方法,但是有抽象方法的類必定是抽象類。
理解:未包含抽象方法的抽象類,目的就是不想讓調用者創建該類對象,通常用於某些特殊的類結構設 計。 -
抽象類的子類,必須重寫抽象父類中所有的抽象方法,否則,編譯無法通過而報錯。除非該子類也是抽象 類。
理解:假設不重寫所有抽象方法,則類中可能包含抽象方法。那麼創建對象後,調用抽象的方法,沒有 意義。