天天看點

C# 派生類的構造函數

我們需要經常使用構造函數,因為構造函數在類的對象聲明的時候就可以完成對變量進行初始化。同時我們也使用派生類繼承基類的一些字段和方法。

那麼在派生類的構造函數的執行順序是什麼樣的呢?

示例

class Program
{
    static void Main(string[] args)
    {
        Son son=new Son();            
    }
}
class Father
{
    public Father()
    {
        Console.WriteLine("這是基類的構造方法");
    }
}
class Son:Father
{
    public Son():base() //當構造函數無參時,base()可以不寫!
    {
        Console.WriteLine("這是派生類的構造方法");
    }
}
           

運作結果:

這是基類的構造方法
這是派生類的構造方法
           

是以執行順序:先執行基類的構造方法,再執行派生類的構造方法。

練習

class Program
{
    static void Main(string[] args)
    {
        Son son=new Son(1,2);            
    }
}

class Father
{
    private int x;
    public Father(int x)
    {
        this.x = x;
        Console.WriteLine(this.x);
    }
}
class Son:Father
{
    private int y;
    public Son(int x,int y):base(x)
    {
        this.y = y;
        Console.WriteLine(this.y);
    }
}
           

運作結果:

1
2
           

注意:

**base()括号中的參數可以與派生類構造函數的參數數量不一樣,兩者沒有關系,base()括号參數的個數對應基類構造函數參數的個數。**

歡迎評價和指正,謝謝。