繼承 (Inheritance) 和封裝 (Encapsulation) 以及多型 (Polymorphism)
並稱物件導向程式設計的三個主要特性

繼承可讓您建立新類別 (Class) 以重複使用、擴充和修改其他類別中定義的行為。
成員被繼承的類別稱為「基底類別」(Base Class),
而繼承這種成員的類別即稱為「衍生類別」(Derived Class)。

如果 ClassC 衍生自 ClassB,ClassB 衍生自 ClassA,
則 ClassC 會繼承在 ClassB 和 ClassA 中宣告的成員。

衍生類別可以加入新的成員,但不能去除父類別已存在的定義

注意:C#中,派生類只能從一個類中繼承。
這是因為,在C++中,人們在大多數情況下不需要一個從多個類中派生的類。
從多個基類中派生一個類這往往會帶來許多問題,從而抵消了這種靈活性帶來的優勢。

C#中,派生類從它的直接基類中繼承成員:方法、域、屬性、事件、索引指示器。
除了構造函數和析構函數,派生類隱式地繼承了直接基類的所有成員。

例:

public class ParentClass
    {
        public ParentClass()
        {
            Console.WriteLine("父類構造函數。");
        }
        public void print()
        { 
            Console.WriteLine("I'm a Parent Class。"); 
        }
    }

public class ChildClass : ParentClass
    {
        public ChildClass()
        { 
            Console.WriteLine("子類構造函數。"); 
        }
        public static void Main()
        {
            ChildClass child = new ChildClass();
            child.print();
        }
    } 

程序運行輸出:
父類構造函數。子類構造函數。I'm a Parent Class。

 

上面的一個類名為ParentClass, main函數中用到的類名為ChildClass。
要做的是創建一個使用父類ParentClass現有代碼的子類ChildClass。


1.首先必須說明ParentClass是ChildClass的基類。
C#僅支持單一繼承。因此,你只能指定一個基類。

 

2.ChildClass的功能幾乎等同於ParentClass。
因此,也可以說ChildClass "就是" ParentClass。

在ChildClass 的Main( )方法中,調用print( ) 方法的結果,就驗證這一點。
該子類並沒有自己的print( )方法,它使用了ParentClass中的 print( )方法。在輸出結果中的第三行可以得到驗證。

 

3.基類在派生類初始化之前自動進行初始化。ParentClass 類的構造函數在ChildClass的構造函數之前執行
會先找父類的建構式,再找子類的建構式

資料來源:
http://big5.webasp.net/article/13/12730.htm
http://big5.webasp.net/article/13/12731.htm
http://msdn.microsoft.com/zh-tw/library/ms173149.aspx

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 小豆干 的頭像
    小豆干

    小豆干就是我唷

    小豆干 發表在 痞客邦 留言(0) 人氣()