Java中的抽象類


抽象方法的概述:

沒有方法體的方法,並且使用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.抽象類的子類如果是普通類,必須重寫抽象類中的抽象方法,如果子類是抽象類,可以不用重寫

 

抽象方法存在的意義:強迫子類重寫方法

 

注意事項:

開發中父類一般都用抽象類

當一個類想要去擴展功能的時候就用接口

1、抽象類不能創建對象,如果創建,編譯無法通過而報錯。只能創建其非抽象子類的對象。

     理解:假設創建了抽象類的對象,調用抽象的方法,而抽象方法沒有具體的方法體,沒有意義。

 

2、抽象類中,可以有構造方法,是供子類創建對象時,初始化父類成員使用的。

     理解:子類的構造方法中,有默認的super(),需要訪問父類構造方法。

 

3、抽象類中,不一定包含抽象方法,但是有抽象方法的類必定是抽象類。

     理解:未包含抽象方法的抽象類,目的就是不想讓調用者創建該類對象,通常用於某些特殊的類結構設計。

 

4、抽象類的子類,必須重寫抽象父類中所有的抽象方法,否則,編譯無法通過而報錯。除非該子類也是抽象類。

     理解:假設不重寫所有抽象方法,則類中可能包含抽象方法。那么創建對象后,調用抽象的方法,沒有意義

 


免責聲明!

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



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