C#構造函數(shù)的特性及使用詳解
C#構造函數(shù)的特性及使用情況是如何的呢?下面我們分兩個部分來向你講解:
C#構造函數(shù)的特性一、
什么是C#構造函數(shù)?Construct,Function
C#構造函數(shù)是一種特殊的成員函數(shù),它主要用于為對象分配存儲空間,對數(shù)據(jù)成員進行初始化.
C#構造函數(shù)具有一些特殊的性質:
(1)C#構造函數(shù)的名字必須與類同名;
(2)C#構造函數(shù)沒有返回類型,它可以帶參數(shù),也可以不帶參數(shù);
(3)聲明類對象時,系統(tǒng)自動調用構造函數(shù),構造函數(shù)不能被顯式調用;
(4)C#構造函數(shù)可以重載,從而提供初始化類對象的不同方法;
(5)若在聲明時未定義構造函數(shù),系統(tǒng)會自動生成默認的構造函數(shù),此時構造函數(shù)的函數(shù)體為空.
(6)靜態(tài)構造函數(shù),用static修飾,用于初始化靜態(tài)變量,一個類只允許有一個構造函數(shù),在類實例化時加載,這時修飾符public、private失去作用.
(7)可以使用public、protected、private修飾符。.
(8)引用父類構造時用():base()方法,引用自身重載的構造使用():this(int para).
(7)可以使用public、protected、private修飾符。
C#構造函數(shù)的特性之C#構造函數(shù)使用時注意事項:
1、定義了一個帶參構造函數(shù)后,最好定義一個無參構造函數(shù),這樣可以避免子類調用時出錯
2、調用基類構造函數(shù):base() 或 :base(參數(shù)列表) 調用本類其它構造函數(shù) :this() 或 :this(參數(shù)列表)
3、只有在用base顯示調用父類的構造函數(shù)時,程序才不會默認的調用不帶參數(shù)的構造函數(shù)。
C#構造函數(shù)的特性二、
C#構造函數(shù)的結構層次關系或者說執(zhí)行順序是怎樣的?Layer,Transfer,Execute
從基類開始構造對象。
- public class MyBaseClass
 - {
 - public MyBaseClass()
 - {
 - Console.WriteLine("In MyBaseClass()");
 - }
 - public MyBaseClass(int i)
 - {
 - Console.WriteLine("In MyBaseClass(int i)");
 - }
 - }
 - public class MyDerivedClass : MyBaseClass
 - {
 - public MyDerivedClass()
 - {
 - Console.WriteLine("In MyDerivedClass()");
 - }
 - public MyDerivedClass(int i)
 - {
 - Console.WriteLine("In MyDerivedClass(int i)");
 - }
 - //public MyDerivedClass(int i, int j)
 - //{
 - //Console.WriteLine("In MyDerivedClass(int i,int j)");
 - //}
 - public MyDerivedClass(int i, int j)
 - : base(i)
 - {
 - Console.WriteLine("In MyDerivedClass(int i,int j):base(i)");
 - }
 - }
 - class Program
 - {
 - static void Main(string[] args)
 - {
 - //Event1
 - MyDerivedClass myObj1 = new MyDerivedClass();
 - Console.WriteLine();
 - //Event2
 - MyDerivedClass myObj2 = new MyDerivedClass(4);
 - Console.WriteLine();
 - //Event3
 - MyDerivedClass myObj3 = new MyDerivedClass(4,8);
 - Console.WriteLine();
 - Console.ReadKey();
 - }
 - }
 
C#構造函數(shù)執(zhí)行程序輸出:
- In MyBaseClass()
 - In MyDerivedClass()
 - In MyBaseClass()
 - In MyDerivedClass(int i)
 - In MyBaseClass(int i)
 - In MyDerivedClass(int i,int j):base(i)
 
很明顯,只有在用base顯示調用父類的構造函數(shù)時,程序才不會默認的調用不帶參數(shù)的構造函數(shù)。
C#構造函數(shù)的特性及使用就向你介紹到這里,希望對你理解和使用C#構造函數(shù)的特性有所幫助。
【編輯推薦】















 
 
 


 
 
 
 