get {
31 Console.Read();
14 p[i] = new Product();
15 Console.WriteLine("請輸入第請輸入第請輸入第請輸入第 " + (i + 1).ToString() + " 筆產品筆產品筆產品");筆產品 16 Console.Write(" 編號編號編號:編號:::");
17 p[i].PartNo = Console.ReadLine();
18 Console.Write(" 品名品名品名:品名:::");
19 p[i].PartName = Console.ReadLine();
20 Console.Write(" 數量數量數量:數量:::");
21 p[i].Qty = int.Parse(Console.ReadLine
22 Console.WriteLine("====================");
23 }
6.5 類別繼承 類別繼承 類別繼承 類別繼承
在物件導向程式設計中最為有力的機制就是繼承 在物件導向程式設計中最為有力的機制就是繼承 在物件導向程式設計中最為有力的機制就是繼承
在物件導向程式設計中最為有力的機制就是繼承,,,,透過類別繼承透過類別繼承透過類別繼承透過類別繼承 可增加程式的延展性
可增加程式的延展性 可增加程式的延展性 可增加程式的延展性。。。。 下列寫法
下列寫法
下列寫法下列寫法 class B:A 表示表示表示表示 B繼承繼承繼承繼承A,,,,此時可讓被繼承類別此時可讓被繼承類別此時可讓被繼承類別此時可讓被繼承類別A 所有功能延伸到類別
所有功能延伸到類別 所有功能延伸到類別 所有功能延伸到類別B 被繼承的類別
被繼承的類別 被繼承的類別
被繼承的類別A可稱為基底類別可稱為基底類別可稱為基底類別可稱為基底類別(Base class)或父類別或父類別或父類別或父類別(Parent class)
繼承的類別 繼承的類別 繼承的類別
繼承的類別B可稱為衍生類別可稱為衍生類別可稱為衍生類別可稱為衍生類別(Derived class)或子類別或子類別或子類別或子類別(Child 繼承的類別
繼承的類別 繼承的類別
繼承的類別B可稱為衍生類別可稱為衍生類別可稱為衍生類別可稱為衍生類別(Derived class)或子類別或子類別或子類別或子類別(Child class)。。。。
class A {
………… // A類別的欄位類別的欄位類別的欄位類別的欄位, 屬性屬性屬性屬性, 方法方法方法方法 }
class B : A //使用使用使用使用「「「:」「 」」」指定類別指定類別指定類別B要繼承類別指定類別 要繼承類別要繼承類別A要繼承類別 {
//此時類別此時類別此時類別此時類別B會擁有類別會擁有類別會擁有類別A所有非會擁有類別 所有非所有非private的成員所有非 的成員的成員的成員
………… //然後加入新的欄位然後加入新的欄位然後加入新的欄位然後加入新的欄位, 屬性屬性屬性, 方法屬性 方法方法方法 }
衍 衍
衍衍生類別生類別生類別無生類別無無無法使用法使用法使用法使用基底基底基底基底類別的類別的類別的類別的private成員成員成員成員 但
但
但但可用可用可用基底可用基底基底基底類別的類別的類別的類別的 public 和和和和 protected 成員成員成員成員。。。。 若若
若若衍衍衍衍生類別成員生類別成員生類別成員生類別成員想想想想要用要用要用要用基底基底基底基底類別的成員類別的成員類別的成員類別的成員但但但但不不不不想想想想公開公開公開公開 此
此
此此時時時基底時基底基底類別的成員必須宣告為基底類別的成員必須宣告為類別的成員必須宣告為類別的成員必須宣告為 protected 保護保護保護保護層級層級層級。層級。。。
66
繼承範例實作 繼承範例實作繼承範例實作
繼承範例實作,,,說明如下,說明如下說明如下:說明如下::: 1
11
1 定義定義定義定義Animal 基底類別有基底類別有基底類別有基底類別有 protected 保護層級的保護層級的保護層級的 _Num 靜態保護層級的 靜態靜態靜態 欄位用來計算目前共產生多少個動物
欄位用來計算目前共產生多少個動物 欄位用來計算目前共產生多少個動物
欄位用來計算目前共產生多少個動物;;;;執行執行執行 public 建構式時執行 建構式時建構式時建構式時 _Num欄位會加欄位會加欄位會加欄位會加1,,,,並在該類別定義並在該類別定義並在該類別定義並在該類別定義 Eat() 方法與方法與方法與 ShowNum()方法與 靜態方法靜態方法
靜態方法靜態方法,,,,ShowNum 靜態方法靜態方法靜態方法靜態方法()用來顯示目前共產生多少個用來顯示目前共產生多少個用來顯示目前共產生多少個用來顯示目前共產生多少個 動物動物
動物動物。。。。 動物動物 動物動物。。。。 2
22
2 定義定義定義定義 Person 衍生類別繼承自衍生類別繼承自衍生類別繼承自衍生類別繼承自 Animal 基底類別並加入基底類別並加入基底類別並加入 public基底類別並加入 的的
的的 Move() 方法方法方法方法,,,此時,此時此時此時 Person 類別會擁有類別會擁有類別會擁有類別會擁有 _Num 欄位欄位欄位欄位、、、、
ShowNum()靜態方法靜態方法靜態方法靜態方法,,,Eat() 和, 和和 Move() 方法和 方法方法,方法,,,且建立且建立且建立且建立 Person 物件時也會執行
物件時也會執行 物件時也會執行
物件時也會執行 Animal 基底類別的建構式基底類別的建構式基底類別的建構式。基底類別的建構式。。。 333
3 在在在在 Main() 方法使用方法使用方法使用 Animal 類別及方法使用 類別及類別及類別及 Person 類別建立物件並類別建立物件並類別建立物件並類別建立物件並 執行
執行
執行執行 Eat() 和和和和 Move()方法方法方法方法,,,最後再呼叫,最後再呼叫最後再呼叫 Animal.ShowNum()最後再呼叫 或
或
或或Person.ShowNum()來顯示共產生多少個動物來顯示共產生多少個動物來顯示共產生多少個動物。來顯示共產生多少個動物。。。
執行情形
Step1新增主控台應用程式專案新增主控台應用程式專案新增主控台應用程式專案新增主控台應用程式專案 新增
新增 新增
新增「「「「主控台應用程式主控台應用程式主控台應用程式」主控台應用程式」」專案」專案專案專案,,,專案名稱為,專案名稱為專案名稱為專案名稱為ClassInherits。。。。 Step2定義定義定義定義Animal類別類別類別類別
執行功能表的 執行功能表的 執行功能表的
執行功能表的【【【專案【專案專案(P)/加入類別專案 加入類別加入類別(C)…】加入類別 】】】指令指令指令指令 新增
新增 新增
新增「「「「Animal.cs」」」」類別檔類別檔類別檔類別檔。。。。接著請在接著請在接著請在接著請在 Animal.cs 撰寫下列程式碼撰寫下列程式碼撰寫下列程式碼:撰寫下列程式碼:::
68
// FileName : Animal.cs
01 namespace ClassInherits 02 {
03 class Animal 04 {