尚硅谷JavaSE基礎(chǔ)

7.6 抽象類

7.6.1 抽象類概念

1.抽象類(abstract class)

隨著繼承層次中一個個新子類的定義,類變得越來越具體,而父類則更一般,更通用。類的設(shè)計應(yīng)該保證父類和子類能夠共享特征。有時將一個父類設(shè)計得非常抽象,以至于它沒有具體的實例,這樣的類就可以聲明為抽象類。

2. 抽象類和具體類

抽象類與具體類

?????? 具體類 — 對現(xiàn)實世界一種實體的抽象定義。

?????? 抽象類 — 對現(xiàn)實世界一種類型的多種實體的統(tǒng)一抽象定義。

例如:

?????? Pet類應(yīng)定義為抽象類

?????? Bird類應(yīng)定義為具體類

?????? 抽象類中可聲明抽象方法

?????? 示例:

?????? public abstract class Pet {

??????????? public abstract void speak();

??????????? ……

? ??}

7.6.2特點

①用abstract關(guān)鍵字來修飾一個類時,這個類叫做抽象類;

②用abstract來修飾一個方法時,該方法叫做抽象方法。

抽象方法:只有方法的聲明,沒有方法的實現(xiàn)。以分號結(jié)束:abstract int abstractMethod( int a );

含有抽象方法的類必須被聲明為抽象類。

 

抽象類不能被實例化。抽象類是用來被繼承的,抽象類的子類必須重寫父類的抽象方法,并提供方法體。若沒有重寫全部的抽象方法,仍為抽象類。

不能用abstract修飾屬性、私有方法、構(gòu)造器、靜態(tài)方法、final的方法。