塘沽建設(shè)網(wǎng)站社交網(wǎng)絡(luò)推廣方法
概述
C#中的繼承是面向?qū)ο缶幊痰闹匾拍钪?#xff0c;它允許一個(gè)類(lèi)(稱(chēng)為子類(lèi)或派生類(lèi))從另一個(gè)類(lèi)(稱(chēng)為父類(lèi)或基類(lèi))繼承屬性和行為。
繼承的主要目的是實(shí)現(xiàn)代碼重用和層次化的組織。子類(lèi)可以繼承父類(lèi)的字段、屬性、方法和事件,而無(wú)需重新實(shí)現(xiàn)這些成員。通過(guò)繼承,我們可以在子類(lèi)中添加額外的功能或修改父類(lèi)的行為,實(shí)現(xiàn)代碼的擴(kuò)展和定制。
在C#中,使用冒號(hào)(:)符號(hào)來(lái)表示一個(gè)類(lèi)繼承自另一個(gè)類(lèi)
基類(lèi)
internal class person{public int age;public string name;public void speake(){Console.WriteLine("說(shuō)話");}}
子類(lèi)
//chinese繼承了person類(lèi),可以直接使用person類(lèi)中定義好的字段和方法internal class chinese : person{//果如,字類(lèi)中定義了和父類(lèi)一樣的字段或方法可以使用new關(guān)鍵字來(lái)修飾public new void speake(){Console.WriteLine("中文");}}
繼承中的構(gòu)造方法
無(wú)參構(gòu)造方法
//父類(lèi)的無(wú)參構(gòu)造方法public person(){Console.WriteLine("person父類(lèi)無(wú)參構(gòu)造函數(shù)");}//字類(lèi)的無(wú)參構(gòu)造方法public chinese(){Console.WriteLine("chinese字類(lèi)的構(gòu)造方法");}
在main方法中實(shí)例化chinese類(lèi)
chinese s = new chinese();
執(zhí)行后的結(jié)果
結(jié)論:在字類(lèi)繼承父類(lèi)中,實(shí)例化子類(lèi)的對(duì)象,會(huì)首先執(zhí)行父類(lèi)的構(gòu)造函數(shù),在執(zhí)行字類(lèi)的構(gòu)造函數(shù)
有參構(gòu)造函數(shù)
//父類(lèi)有參構(gòu)造函數(shù)public person(int age, string name){Console.WriteLine("person父類(lèi):" + "age:" + age + ",name" + name);}//字類(lèi)的有參構(gòu)造函數(shù)//base關(guān)鍵字的作用是把字類(lèi)的形參傳遞給父類(lèi),有參構(gòu)造函數(shù)必須要父類(lèi)傳參,要不然會(huì)報(bào)錯(cuò)//base這里也可以直接寫(xiě)自己的參數(shù),不復(fù)用字類(lèi)傳遞過(guò)來(lái)的值 :base(10,"xiaoming")public chinese(int age, string name) : base(age, name){Console.WriteLine("chinese字類(lèi)" + "age:" + age + ",name:" + name);}
在main方法執(zhí)行chinese的有參的實(shí)列
chinese s = new chinese(301, "xiaoming1");
執(zhí)行后結(jié)果
總結(jié):當(dāng)父類(lèi)只有有參構(gòu)造函數(shù)時(shí),字類(lèi)使用有參構(gòu)函數(shù)時(shí)。首先調(diào)用自己的父類(lèi)的有參構(gòu)造函數(shù),在調(diào)用自己的有參有參構(gòu)造函數(shù)。