C 中的抽象類 抽象屬性 抽象方法

2021-10-07 00:05:44 字數 2020 閱讀 4312

c#允許把類、屬性和函式宣告為abstract

抽象類不能例項化,抽象類可以包含普通屬性和抽象屬性,普通函式和抽象函式。

抽象函式就是只有函式定義沒有函式體的函式。顯然,抽象函式本身也是虛擬(virtual)的。

注意:類是乙個模板,那麼抽象類就是乙個不完整的模板。我們自然不可以使用不完整的模板去構造物件。

1、建立乙個鳥類的抽象類

// 鳥的抽象類

abstract

class

bird

// 含有抽象屬性和方法,就一定是抽象類

// 鳥體重的屬性

public

abstract

double weight

// 鳥飛翔的抽象方法

public

abstract

void

fly();

}

當乙個類中如果有屬性、方法被宣告為abstract時,這個類也要被宣告為abstract

2、建立乙個麻雀的類

// 建立麻雀的類,繼承自鳥

class

sparrow

:bird

// 繼承了抽象類,此時必須要求實現抽象屬性和方法

// 麻雀飛翔的方法

public

override

void

fly(

)}

當繼承乙個抽象類時,必須去實現抽象屬性、抽象方法。

3、例項化乙個麻雀和鳥

// 用派生類宣告和構造

sparrow sparrow =

newsparrow()

;sparrow.

fly();

// 用抽象類宣告,用派生類構造

bird bird =

newsparrow()

; bird.

fly(

);

注意:我們可以通過抽象類去宣告物件,但是不可以用抽象類去構造。

4、執行結果,如下所示:

當我們在寫基類時,有的屬性、方法是一定要被重寫的,在基類中實現並沒有意義。這時我們就可以將這種屬性、方法寫作抽象屬性、抽象方法,並將基類改作抽象類,這樣我們在寫派生類時,直接對沒有實現的抽象屬性、抽象方法進行重寫(override)即可。

抽象類是特殊的類,只是不能被例項化。除此以外,具有類的其他特性;重要的是抽象類可以包括抽象屬性、抽象方法,這是普通類所不能的。

**重用,派生類都能用抽象類定義的屬性和方法。

靈活,某個派生類既可以繼承該方法也可以派生乙個新的。

抽象類是所有派生類通用方法的最小集合,可以封裝某乙個派生類的例項用來進行傳遞。

抽象類中的抽象屬性和抽象方法必須是公有的,因此必須有public修飾符。

派生類必須重寫(override)抽象類中的所有抽象屬性和抽象方法,如果沒有全部重寫(override),那麼派生類必須是抽象類。

抽象類中可以有非抽象屬性和非抽象方法,也可以是私有或者公有,但是如果是私有的話,派生類就不能訪問,這樣也就無意義了,所以一般情況下都設定為公有。

有抽象屬性或抽象方法的類一定是抽象類,抽象類中的屬性或方法不一定都是抽象的。

抽象類和介面都包含可以由派生類繼承的成員,它們都不能直接例項化。關於介面的知識,請檢視:c#介面(inte***ce)精講

它們的派生類只能繼承乙個基類(所謂的單繼承,多介面繼承),即:只能直接繼承乙個抽象類,但是可以繼承任意多個介面。

抽象類中可以定義成員的具體實現,但是介面卻不行。

抽象類中可以包含字段,建構函式,析構函式,靜態成員等,介面中不可以。

抽象類中的成員可以是私有的(只要它們不是抽象的),受保護的,內部的或者受保護的內部成員,但是介面中的成員必須是公共的(預設就是公共的)。

C 抽象類 抽象屬性 抽象方法

抽象類往往用來表徵對問題領域進行分析 設計中得出的抽象概念,是對一系列看上去不同,但是本質上相同的具體概念的抽象。下面我們以水果為例,首先定義抽象類fruit,抽象類中有公共屬性vendor,抽象屬性price和抽象方法growinarea,1 public abstract class fruit...

c 學習筆記 抽象類 抽象方法 抽象屬性

抽象類與抽象方法 先說些概念的東西 在乙個類前面加上 abstract 關鍵字,此類就成為了抽象類。對應的,乙個方法類前面加上 abstract 關鍵字,此方法就成為了抽象方法。abstract class fruit 抽象類 注意抽象方法不能有實現 在函式名後直接跟乙個分號。抽象類專用於派生出子類...

C 中的抽象類 抽象方法

抽象類 abstract 修飾符可與類和方法一起使用 定義抽象類的目的是提供可由其子類共享的一般形式。子類可以根據自身需要擴充套件抽象類。抽象類不能例項化。抽象方法沒有函式體。抽象方法必須在子類中給出具體實現。在以下情況下,某個類將成為抽象類 當乙個類的乙個或多個方法為抽象方法時。當該類為乙個抽象類...