我們需要經常使用構造函數,因為構造函數在類的對象聲明的時候就可以完成對變量進行初始化。同時我們也使用派生類繼承基類的一些字段和方法。
那麼在派生類的構造函數的執行順序是什麼樣的呢?
示例
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()括号參數的個數對應基類構造函數參數的個數。**
歡迎評價和指正,謝謝。