繼承是派生類(子類)去實現(重寫<override>、重構<new>)基類(父類)的方法或屬性。從而獲取在派生類中要實現的功能。
子類調用父類構造方法,在父類中有個實現姓名和年齡的構造方法但是中子類也要實現這樣的功能這時子類不用再次去寫這個功能只要去調用父類的功能即可。
public class Person { private string _name = null; private int _age = 0; public Person(string name, int age)//父類的構造方法 { this._name = name;//獲得參數的值 this._age = age; Console.WriteLine("您的姓名是{0},您的年齡是{1}.", this._name, this._age); } } public class Studnet : Person { private int _id; public Studnet(string name, int age, int IDCard):base(name,age) //子類構造方法繼承父類構造方 //把接受到的name、age兩個參數交給父類的構造方法去處理 { this._id = IDCard; Console.WriteLine("您的身份證號碼為{0}",this._id); } } class Program { static void Main(string[] args)//主函數 { Studnet stu = new Studnet("benshou", 12, 99999); Console.ReadLine(); } }
實現效果
您的姓名是benshou,您的年齡是12.
您的身份證號碼為99999
在C#中定義了,子類去調用父類的方法時,會先去執行父類的方法之后再去執行子類的方法
還是以子類繼承父類,現在是子類實現父類的重寫和重載
重寫只是對方法里面的功能實現重新做的了編寫,並沒有對方法的參數進行添加、改變、刪除
重載則是對方法參數的個數、位置、參數類型進行了改變。
重寫ShowME方法
public class Person { public virtual void ShowME(string name,string school,string Class) { Console.WriteLine("我在{0}學習",Class); Console.WriteLine("我叫{0}.我畢業與{1}",name,school); } } public class Studnet : Person { public override void ShowME(string name,string school, string Class) //重寫了父類的ShowME方法 { Console.WriteLine("姓名{0}\n畢業學校{1}\n曾讀班級{2}", name,school,Class); } } } class Program { static void Main(string[] args)//主函數 { Student stu = new Studnet(); stu.ShowME("benshou","浙江金融職業學院","電子商務(7)班"); Console.ReadLine(); } }
實現效果
姓名benshou
畢業學校浙江金融職業學院
曾讀班級電子商務(7)班
重寫的父類方法時,必須指明被重寫的方法是虛方法(virtual關鍵字)。在子類重寫父類方法時必須有重寫關鍵字(override)這樣才能重寫父類的方法
重載ShowME方法
public class Person { public void ShowME(string name,string school,string Class) { Console.WriteLine("我在{0}學習",Class); Console.WriteLine("我叫{0}.我畢業與{1}",name,school); } } public class Studnet : Person { public new void ShowME(string name) { Console.WriteLine("姓名{0}",name); } } class Program { static void Main(string[] args)//主函數 { Studnet stu = new Studnet(); stu.ShowME("benshou"); Console.ReadLine(); } }
實現效果
姓名benshou
子類重載父類方法,子類必須指定重載的關鍵字(new),而父類被重載的方法則可以不用指定哪個方法被重載的關鍵字(virtual)。重載一個方法,是對一個方法重新進行了編寫從方法的參數到方法體,唯獨方法的名稱沒有進行改變。重載也可以對原來沒有返回類型的方法(void),改變為有返回類型的方法。總體來講,重載處了方法名不能被改變為另外什么都能重新定義(方法作用域、返回類型、方法體、方法參數)