深入剖析C#繼承機制2

二、C#中的繼承符合下列規則:

  1、繼承是可傳遞的。如果C從B中派生,B又從A中派生,那麼C不僅繼承了B中聲明的成員,同樣也繼承了A中的成員。Object 類作爲所有類的基類。

  2、派生類應當是對基類的擴展。派生類可以添加新的成員,但不能除去已經繼承的成員的定義。

  3、構造函數和析構函數不能被繼承。除此以外的其它成員,不論對它們定義了怎樣的訪問方式,都能被繼承。基類中成員的訪問方式只能決定派生類能否訪問它們。

  4、派生類如果定義了與繼承而來的成員同名的新成員,就可以覆蓋已繼承的成員。但這並不因爲這派生類刪除了這些成員,只是不能再訪問這些成員。

  5、類可以定義虛方法、虛屬性以及虛索引指示器,它的派生類能夠重載這些成員,從而實現類可以展示出多態性。

  6、派生類只能從一個類中繼承,可以通過接呂實現多重繼承。

  下面的代碼是一個子類繼承父類的例子:

using System ;
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的基類。

  這是通過在ChildClass類中作出如下說明來完成的:"public class ChildClass : ParentClass"。在派生類標識符後面,用分號":" 來表明後面的標識符是基類。C#僅支持單一繼承。因此,你只能指定一個基類。

  2.ChildClass的功能幾乎等同於ParentClass。

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

  3.基類在派生類初始化之前自動進行初始化。ParentClass 類的構造函數在ChildClass的構造函數之前執行。

發佈了29 篇原創文章 · 獲贊 0 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章