繼承是面向?qū)ο蟮娜筇匦灾弧?/p>
1.繼承
1.1概念:一個(gè)類從其他類派生時(shí),派生類隱式獲得基類除構(gòu)造函數(shù)和析構(gòu)函數(shù)外所有成員。C#只支持單繼承
1.2.語(yǔ)法格式:calss ClassName:SuperClass{}。冒號(hào)表示繼承,示例
public class Person()
{
private string Name{ get; set; }
}
class Student:Person(){
public Student(string name){
this.Name = name; // 繼承了父類的Name屬性
}
public void Study(){
Console.WriteLine(name + “在學(xué)習(xí)”);
}
}
1.3.構(gòu)造函數(shù):當(dāng)子類實(shí)例化時(shí),構(gòu)造函數(shù)從基類依次被調(diào)用。
通過 sealed 關(guān)鍵字可以禁止類進(jìn)一步派生
2.幾個(gè)關(guān)鍵字
virtual: 用于修飾方法,屬性,索引器或事件,并使他們可以在派生類中被重寫(override)
new: 顯式隱藏從父類繼承的成員,主要用于派生類和父類同名方法的選擇
override: 1).重寫繼承的方法,或事件的抽象實(shí)現(xiàn)或虛實(shí)現(xiàn)
2).由override聲明重寫的方法稱為重寫基方法,重寫的基方法必須與override方
法具有相同的方法名和簽名
3).不能重寫非虛方法或靜態(tài)方法,重寫的基方法必須具有virtual、abstract、或
override關(guān)鍵字
代碼:
public class Person()
{
private string Name{ get; set; }
// 如果這里沒有加上virtual 關(guān)鍵字修飾,子類將不能通過override關(guān)鍵字進(jìn)行重寫
public virtual void Eat(){
Console.WriteLine("我是人類,我要吃飯");
}
}
class Student:Person(){
public override void Eat()
{
Console.WriteLine("學(xué)生要吃飯");
}
//public new void Eat()
//{
// Console.WriteLine("學(xué)生要吃飯");
//}
}
static void Main(string[] args)
{
Person person = new Student(“繼承”);
person.Eat();
}
new關(guān)鍵字修飾
override關(guān)鍵字修飾
結(jié)論:
new關(guān)鍵字用來(lái)區(qū)分子類和派生類的方法
override重寫父類的方法,即覆蓋了父類的方法
【原】