抽象方法的概述:
沒有方法體的方法,並且使用abstract關鍵字修飾的方法
抽象類的概述:
用abstract修飾的類就是抽象類
抽象方法的格式
權限修飾符 abstract 返回值類型 方法名(形參); public abstract void run();
抽象類的格式
public abstract class Animal { public abstract void run(); }
public class Cat extends Animal { public void run (){ System.out.println("小貓在牆頭走~~~"); } } public class CatTest { public static void main(String[] args) { // 創建子類對象 Cat c = new Cat(); // 調用run方法 c.run(); } } 輸出結果: 小貓在牆頭走~~~
抽象類的特點
1.有抽象方法的類一定是抽象類,但是抽象類不一定有抽象方法
2.抽象類是不可以直接創建對象的,但是可以通過其子類來創建對象
3.抽象類中有構造方法,但是不可以用來創建對象,但是可以供子類初始化父類的成員變量
4.抽象類的子類如果是普通類,那么必須實現抽象類中的抽象方法
5.抽象類的子類如果是抽象類,那么就可以不用實現抽象類中的抽象方法
抽象類也是一個類,和普通類的區別
1.抽象類可以定義抽象方法,而普通類不可以
2.抽象類不可直接創建對象,但是普通類可以
3.抽象類的子類如果是普通類,必須重寫抽象類中的抽象方法,如果子類是抽象類,可以不用重寫
抽象方法存在的意義:強迫子類重寫方法
注意事項:
開發中父類一般都用抽象類
當一個類想要去擴展功能的時候就用接口
理解:假設創建了抽象類的對象,調用抽象的方法,而抽象方法沒有具體的方法體,沒有意義。
2、抽象類中,可以有構造方法,是供子類創建對象時,初始化父類成員使用的。
理解:子類的構造方法中,有默認的super(),需要訪問父類構造方法。
3、抽象類中,不一定包含抽象方法,但是有抽象方法的類必定是抽象類。
理解:未包含抽象方法的抽象類,目的就是不想讓調用者創建該類對象,通常用於某些特殊的類結構設計。
4、抽象類的子類,必須重寫抽象父類中所有的抽象方法,否則,編譯無法通過而報錯。除非該子類也是抽象類。
理解:假設不重寫所有抽象方法,則類中可能包含抽象方法。那么創建對象后,調用抽象的方法,沒有意義
