類的繼承規則:
1、派生類自動包含基類的所有成員。但對於基類的私有成員,派生類雖然繼承了,但是不能在派生類中訪問。
2、所有的類都是按照繼承鏈從頂層基類開始向下順序構造。最頂層的基類是System.Object類,所有的類都隱式派生於它。只要記住這條規則,就能理解派生類在實例化時對構造函數的調用過程。
子類無論是默認構造(無參構造)和帶參構造都默認將從頂層父類的默認構造一直調用到當前類之前的默認構造,再調用當前類的默認構造或者帶參構造。
可以在構造函數語句之前使用 :base(參數) 來指定當前類調用上層類的哪一個構造函數。
示例:DerivedClass.cs文件
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace DerivedClass2 { class BaseClass { public BaseClass() { Console.WriteLine("BaseClass 的默認構造器"); } public BaseClass(string BparaString) { Console.WriteLine("BaseClass 的帶一個參數的構造器,參數是:{0}", BparaString); } public BaseClass(string BparaString, int BparaInt) { Console .WriteLine ("BaseClass 的帶兩個參數的構造器,參數是:{0},{1}",BparaString,BparaInt); } } class DerivedClass:BaseClass { public DerivedClass() { Console.WriteLine("DerivedClass 的默認構造器"); } public DerivedClass(string paraString) : base(paraString) { Console.WriteLine("DerivedClass 的帶一個參數的構造器,參數是:{0}",paraString ); } public DerivedClass(string paraString, int paraInt) { Console.WriteLine("DerivedClass 的帶兩個參數的構造器,參數是:{0},{1}", paraString, paraInt); } } class DerivedDerivedClass : DerivedClass { public DerivedDerivedClass() { Console.WriteLine("DerivedDerivedClass 的默認構造器"); } public DerivedDerivedClass(string ddparaString) { Console.WriteLine("DerivedDerivedClass 的帶一個參數的構造器,參數是:{0}", ddparaString); } public DerivedDerivedClass(string ddparaString, int ddparaInt) : base(ddparaString,ddparaInt ) { Console.WriteLine("DerivedDerivedClass 的帶兩個參數的構造器,參數是:{0},{1}", ddparaString, ddparaInt); } } }
Program.cs 文件
using System; using System.Collections.Generic; using System.Linq; using System.Windows.Forms; namespace DerivedClass2 { static class Program { /// <summary> /// 應用程序的主入口點。 /// </summary> static void Main() { DerivedClass DC1 = new DerivedClass("dc參數"); Console.WriteLine("----------------"); DerivedDerivedClass ddc = new DerivedDerivedClass("ddc參數",99); } } }
運行結果: