C#建構函式

來源:互聯網
上載者:User
 一、C#建構函式?Construct,Function

建構函式是一種特殊的成員函數,它主要用於為對象分配儲存空間,對資料成員進行初始化.

建構函式具有一些特殊的性質:

(1)建構函式的名字必須與類同名;

(2)建構函式沒有傳回型別,它可以帶參數,也可以不帶參數;

(3)聲明類對象時,系統自動調用建構函式,建構函式不能被顯式調用;

(4)建構函式可以重載,從而提供初始化類對象的不同方法;

(5)若在聲明時未定義建構函式,系統會自動產生預設的建構函式,此時建構函式的函數體為空白.

(6)靜態建構函式,用static修飾,用於初始化靜態變數,一個類只允許有一個建構函式,在類執行個體化時載入,這時修飾符public、private失去作用.

(7)可以使用public、protected、private修飾符。.

(8)引用父類構造時用():base()方法,引用自身重載的構造使用():this(int para).

(7)可以使用public、protected、private修飾符。

注意:

1、定義了一個帶參建構函式後,最好定義一個無參建構函式,這樣可以避免子類調用時出錯

2、調用基類建構函式:base() 或 :base(參數列表)  調用本類其它建構函式 :this() 或 :this(參數列表)

3、只有在用base顯示調用父類的建構函式時,程式才不會預設的調用不帶參數的建構函式。

二、C#建構函式的結構層次關係或者說執行順序是怎樣的?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();
        }
    }

程式輸出:

In MyBaseClass()

In MyDerivedClass()

In MyBaseClass()

In MyDerivedClass(int i)

In MyBaseClass(int i)

In MyDerivedClass(int i,int j):base(i)

很明顯,只有在用base顯示調用父類的建構函式時,程式才不會預設的調用不帶參數的建構函式。

http://junmail.javaeye.com/blog/197089

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.