參考資料
繼承(以及封裝和多型性)是物件導向的程式設計的三個主要特徵之一。
通過繼承,可以建立新類,以便重用、擴充套件和修改在其他類中定義的行為。
其成員被繼承的類稱為「基類」,繼承這些成員的類稱為「派生類」。
派生類只能有乙個直接基類。
但是,繼承是可傳遞的。
如果 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 withnew
members
– 如果希望派生類具有與基類中的成員同名的成員,則可以使用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.
virtual
members
– 僅當基類成員宣告為virtual或abstract時,派生類才能重寫基類成員;
– 派生成員必須使用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# 中,派生類可以通過關鍵字new
或override
包含與基類方法同名的方法。
抽象方法只存在與抽象類中;
抽線和方法沒有具體實現,所以沒有花括號和函式體,直接以分號結尾,例如:
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 什麼是抽...