二、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的構造函數之前執行。