舉例如下
class Demo { private int a; private int b; public Demo() { a = 11; b = 22; } public string DoSomething() { return "There is no spoon."; } public int DoSomething2() { return a + b; } } class Demo2 : Demo {} class DemoTest { static void Main() { Demo2 d = new Demo2(); System.Console.WriteLine(d.DoSomething()); System.Console.WriteLine(d.DoSomething2()); } } /* 《程式語言教學誌》的範例程式 http://pydoing.blogspot.com/ 檔名:class12.cs 功能:示範 C# 程式 作者:張凱慶 時間:西元 2013 年 6 月 */
繼承的寫是在子類別後加上冒號,然後是父類別的名稱
class Demo2 : Demo {}
此例的子類別沒有另外設定屬性及方法,注意父類別 Demo 的屬性 a 及 b 都是 private ,這裡是用 public 的方法存取 private 屬性,這是物件導向程式設計的封裝技巧喔!
編譯執行,結果如下
下例示範子類別另訂方法
class Demo { protected int a; protected int b; public Demo() { a = 11; b = 22; } } class Demo2 : Demo { private int c; public Demo2() { c = 33; } public int DoSomething() { return a + b + c; } } class DemoTest { static void Main() { Demo2 d = new Demo2(); System.Console.WriteLine(d.DoSomething()); } } /* 《程式語言教學誌》的範例程式 http://pydoing.blogspot.com/ 檔名:class13.cs 功能:示範 C# 程式 作者:張凱慶 時間:西元 2013 年 6 月 */
此例我們在子類別 Demo2 的 DoSomething 使用了父類別的屬性 a 與 b
public int DoSomething() { return a + b + c; }
這裡須注意由於 private 成員無法被繼承,因此 Demo 的 a 與 b 已改成 protected
protected int a; protected int b;
至於子類別的建構子 (constructor) 會先執行父類別的建構子,因此這裡我們只有設定 Demo2 的屬性 c
public Demo2() { c = 33; }
編譯執行,結果如下
中英文術語對照 | |
---|---|
繼承 | inheritance |
類別 | class |
子類別 | subclass |
父類別 | superclass |
屬性 | property |
方法 | method |
建構子 | constructor |
您可以繼續參考
類別
相關目錄
回 C# 快速導覽
回 C# 教材
回首頁
參考資料
Standard ECMA-334 C# Language Specification
msdn: 繼承 (C# 程式設計手冊)
2 則留言:
繼承的寫是在子類別後加上「分號」,然後是父類別的名稱
應該是 「冒號」~
感謝你的教學分享~
這邊打錯字了,已修改,感謝指正 ^_^
張貼留言