抽象類與抽象函式

2021-07-11 00:09:15 字數 1531 閱讀 2142

(1)抽象函式:只有函式定義,沒有函式體的函式。例如:

abstract

void

fun()

(2)抽象類(基類):使用abstract定義的類稱之為抽象類。記住:抽象類天生就是當爹的,要被繼承!

(1)抽象類不能生成物件(假設可以生成物件,那麼可以呼叫裡面的抽象函式,而抽象類中若是有乙個抽象 函式,其函式體為空,這樣便毫無意義);

(2)如果乙個抽象類中含有乙個抽象函式,那麼這個類必須宣告為抽象類;

(3)如果乙個抽象類中沒有抽象函式,那麼這個類也可以宣告為抽象類(當不想讓其生成物件時,將其定義為抽象類即可)。

注意:抽象關鍵字不能和關鍵字final、private、static共存

【例1】抽象類的使用例項。

package com.chouxiang;

//定義乙個抽象類

public

abstract

class

person

//定義乙個抽象方法

abstract

void eat();

}package com.chouxiang;

/*子類繼承了父類的屬性與方法,當然包括父類的抽象函式。

* 故而chinese類應該為抽象類,應該在其前面加上abstract,這時子類不可以例項化。

*/public

class

chinese

extends

person

//使用覆蓋的方式,在子類中複寫父類的抽象函式,這時就可以將子類變成非抽象類,子類便可以生成物件

void eat()

}package com.chouxiang;

public

class

test

}

執行結果:

結果分析:

通過執行結果可知,抽象類是可以有建構函式的!理論上,建構函式一般用於生成物件,而抽象類是不能生成物件的,所以,抽象類貌似不可以有建構函式。其實,我們忽略了乙個重要的資訊,那就是,非抽象類子類繼承了抽象父類,非抽象子類中顯然可以有建構函式。呼叫子類的建構函式前必須前呼叫父類中建構函式,所以,抽象父類是可以有建構函式的!

在實際開發過程中,例如以上的**,父類是乙個抽象類,子類繼承了父類,父類中有乙個抽象函式。如不想子類稱為抽象類,必須在子類中複寫父類中的抽象函式,否則,編譯將出錯,這樣可以防止我們在後期開發中出錯。

(1)相同之處:

一般類和抽象類都用於描述事物。

裡面都可以定義屬性和行為,以及建構函式。

(2)不同之處:

一般類中不可以定義抽象函式,抽象類可以。

一般類可以被例項化,抽象類不行。

一般類可以被繼承,也可以不被繼承,

抽象類一定要被繼承,需要其子類覆蓋所有的抽象方法子類才可以被例項化。

抽象函式抽象類

物件導向 先抽象後具體 抽象類也叫基類 抽象函式 只有函式的定義,沒有函式體的函式,語法 類必須定義為抽象類,才能呼叫抽象函式,抽象類裡面可以沒有抽象函式 abstract classprinter 抽象類不能生成物件,而抽象類通常被繼承,繼承的使用方法 abstract class hpprint...

抽象類和抽象函式

抽象類和抽象函式 類是抽象的,物件是具體的 比類更抽象的是抽象類 抽象方法 定義 只有函式的定義,沒有函式體 函式體即是 的函式稱為抽象函式 例 abstract void fun 抽象方法特點 抽象方法和抽象類用abstract修飾 抽象方法在乙個類中,這個類必須是抽象類 抽象方法沒有方法體 抽象...

抽象類和抽象函式

a.抽象函式 只有函式定義,沒有函式體.eg abstract void fun b.抽象類 1.抽象類不能被例項化生成物件.2.當乙個類中包含有抽象函式時,該類必須被宣告為抽象類.3.類中沒有抽像函式時,也可被宣告為抽象類,一般用於不想該類被例項化生成物件.4.抽象類天生就是用來被繼承的.抽象類的...