在面向對象當中繼承是非常重要的,也是面向對象的三大特性之一(繼承、封裝、多態),今天我們來揭開他的神秘面紗。 話不多說,我們上菜。 寫好代碼後我們運行看看效果! 很顯然看出來,公司兩個程式員都繼承了程式員類。 總結: 父類包含了多少內容,派生類(子類)全部接受(包括屬性 欄位 方法等), 可以重寫覆 ...
在面向對象當中繼承是非常重要的,也是面向對象的三大特性之一(繼承、封裝、多態),今天我們來揭開他的神秘面紗。
話不多說,我們上菜。
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; /** * 假設我們公司有兩種程式員: * java程式員指的是用java語法寫程式的程式員,用Jpro這個類表示; * C#程式員指的是用C#語法寫程式的程式員,用Cpro這個類來表示。 * 每個類都有一個WriteCode()方法。 * 都屬於程式員,用Programmer這個類表示。 * 現在公司來了一個項目,要求派某個程式員寫一個程式。 */ namespace inheritApplication { //程式員類(基類) class Programmer { public string name = "我是程式員"; } //java程式員類 class Jpro { public string name = "java程式員"; public string language = "我用java語法寫代碼"; } //C程式員類 class Cpro { public string name = "C#程式員"; public string language = "我用C#語法寫代碼"; } //編寫項目類 class Pro : Programmer //繼承基類 { public void WriteProgram(Jpro program) //繼承java程式員類 { Console.WriteLine("" + program.name + ":" + name + "," + program.language + ""); } public void WriteProgram(Cpro program) { Console.WriteLine("" + program.name + ":" + name + "," + program.language + ""); } } //主程式 class Program { static void Main(string[] args) { Pro p = new Pro(); Jpro p1 = new Jpro(); p.WriteProgram(p1); Cpro p2 = new Cpro(); p.WriteProgram(p2); Console.ReadKey(); } } }
寫好代碼後我們運行看看效果!
很顯然看出來,公司兩個程式員都繼承了程式員類。
總結:
父類包含了多少內容,派生類(子類)全部接受(包括屬性 欄位 方法等),
可以重寫覆蓋,使用override重寫,可以使用base調用父類中的內容。
繼承可以減少代碼的冗餘,也為程式的修改提供了很大的方便之處。
當然,如果結合介面那就完美了,下一篇中我們將提到介面的實現。