首頁技術(shù)文章正文

什么是抽象類?怎么定義?

更新時間:2021-08-31 來源:黑馬程序員 瀏覽量:

IT培訓班

當定義一個類時,常常需要定義一些成員方法描述類的行為特征,但有時這些方法的實現(xiàn)方式是無法確定的。例如,在定義Animal類時,shout( )方法用于描述動物的叫聲,但是不同動物的叫聲是不同的,因此在shout( )方法中無法準確地描述動物的叫聲。

針對上面描述的情況,Java提供了抽象方法來滿足這種需求。抽象方法是使用abstract關(guān)鍵字修飾的成員方法,抽象方法在定義時不需要實現(xiàn)方法體。抽象方法的定義格式如下:

abstract void方法名稱 (參數(shù));

當一個類包含了抽象方法,該類必須是抽象類。抽象類和抽象方法一樣,必須使用abstract關(guān)鍵字進行修飾。
抽象類的定義格式如下:

abstract class 抽象類名稱{

訪問權(quán)限返回值類型 方法名稱(參數(shù)){

return [返回值] ;

訪問權(quán)限abstract返回值類型抽象方法名稱(參數(shù)) ;

//抽象方法,無方法體

}

從以上格式可以發(fā)現(xiàn),抽象類的定義比普通類多了一些抽象方法,其他地方與普通類的組成基本上相同。

抽象類的定義規(guī)則如下。
(1)包含一個以上抽象方法的類必須是抽象類。
(2)抽象類和抽象方法都要使用abstract關(guān)鍵字聲明。
(3)抽象方法只需聲明而不需要實現(xiàn)。
(4)如果一個類繼承了抽象類,那么該子類必須實現(xiàn)抽象類中的全部抽象方法。
下面通過一個案例學習抽象類的使用,如文件4-10所示。

文件4-10 Example10.java

 //定義抽象類Animal

   abstract class Animal(

  //定義抽象方法shout ()

   abstract void shout () ;
}

 //定義Dog類繼承抽象類Animal

class Dog extends Animal {

  //實現(xiàn)抽象方法shout ()

  void shout ()

System.out.println ("汪汪..... ;
     
}
}

 //定義測試類

 public class Example10 {


public static void main (String[] args) {
Dog dog=new Dog();         //創(chuàng)建Dog類的實例對象

dog. shout() ;           // 調(diào)用dog對象的shout ()方法

 }
 
}

在文件4-10中,第2~5行代碼是聲明了一個抽象類
Animal,并在Animal類中聲明了個抽象方法 shout ( );第9~11行代碼在子類Dog中實現(xiàn)父類Anima的抽象方法shout( );第17行代碼通過子類的實例化對象調(diào)用shout( )方法。

注意:
使用abstract關(guān)鍵字修飾的抽象方法不能使用private修飾,因為抽象方法必須被子類實現(xiàn),如果使用了private聲明,則子類無法實現(xiàn)該方法。




猜你喜歡:

File類中常用的構(gòu)造方法【黑馬程序員】

怎樣將子類對象轉(zhuǎn)換成父類?

InectAddress類的常用方法

黑馬程序員Java培訓課程

分享到:
在線咨詢 我要報名
和我們在線交談!