C 的繼承 多型

2021-10-10 19:45:26 字數 2113 閱讀 7628

參考資料

繼承(以及封裝和多型性)是物件導向的程式設計的三個主要特徵之一。

通過繼承,可以建立新類,以便重用、擴充套件和修改在其他類中定義的行為。

其成員被繼承的類稱為「基類」,繼承這些成員的類稱為「派生類」。

派生類只能有乙個直接基類。

但是,繼承是可傳遞的。

如果 classc 派生自 classb,並且 classb 派生自 classa,則 classc 將繼承在 classb 和 classa 中宣告的成員。

// 基類

class

person

public

void

read()

}// 派生類

class

student

:person

public

newvoid

read()

// 這裡也可以不寫 「new」, 但是vs會發出警告

public

void

study()

}

class

program

}// 執行結果:

person can read.

then can study.

hide base class members withnewmembers

– 如果希望派生類具有與基類中的成員同名的成員,則可以使用new關鍵字隱藏基類成員;

new關鍵字可加可不加,但不加的話,vs會發出警告;

– 在派生類的方法上使用new關鍵字時,不需要在基類做任何改動,就像上面的例子所示;

– 通過將派生類的例項強制轉換為基類的例項,可以訪問隱藏的基類成員,如下例:

student b =

newstudent(.

..);

b.read()

;// calls the new method.

// student can read.

person a =

(student)b;

a.read()

;// calls the old method.

// person can read.

virtualmembers

– 僅當基類成員宣告為virtualabstract時,派生類才能重寫基類成員;

– 派生成員必須使用override關鍵字顯式指示該方法將參與虛呼叫。

– 當派生類重寫某個虛擬成員時,即使該派生類的例項被當作基類的例項訪問,也會呼叫該成員,如下所示:

student b =

newstudent

("joe",20

,114);

b.read()

;// calls the new method.

// student can read.

person a =

(person)b;

a.read()

;// also calls the new method.

// student can read.

在 c# 中,派生類可以通過關鍵字newoverride包含與基類方法同名的方法。

抽象方法只存在與抽象類中;

抽線和方法沒有具體實現,所以沒有花括號和函式體,直接以分號結尾,例如:

public

abstract

void

mymethod()

;

polymorphism (c# programming guide)

versioning with the override and new keywords (c# programming guide)

virtual (c# reference)

abstract (c# reference)

C 多型 繼承多型

什麼是多型?個人理解為 在程式語言繼承關係中,子類能替代父類,表現出不同的行為。換句話說 在繼承關係中,乙個類被例項化被其子類替代,子類中有父類的虛方法重寫,或者有父類同名方法 new 呼叫相同方法時候,將表現出子類或者父類中不同行為 老闆,上 static void main string arg...

C 繼承多型

1 什麼是繼承?舉例說明 繼承 子類繼承父類,繼承而得到的類稱為派生類,被繼承的類叫做基類 public class humanity 基類 public string id public string name public string public int age public class s...

C 繼承多型

01 什麼是繼承?舉例說明 public class car public class gojiaoche car 02 什麼是多型?舉例說明 public class car public virtual void kai public class gojiaoche people 03 什麼是抽...