c#基礎-繼承-12.繼承中的建構函式
阿新 • • 發佈:2021-01-10
特點:在子類物件例項化時,預設會先呼叫父類的建構函式,一直往上找父親。從老祖宗開始執行,一代一代往下。
例子:
class GameObject
{
public GameObject()
{
Console.WriteLine("物體位置");
}
}
class Animal : GameObject
{
public Animal()
{
Console.WriteLine("動物來了" );
}
}
class Tree : Animal
{
public Tree()
{
Console.WriteLine("一起種樹嗎");
}
}
class Person
{
static void Main(string[] args)
{
Tree gameObject = new Tree();
Console.ReadKey();
}
}
截圖:
父類中的無參建構函式
如果父類中寫了有參建構函式,那子類會因找不到父類的無參建構函式而報錯,如果你有參和無參都寫了,那不會報錯。
所以通過base關鍵字,來呼叫父類的有參建構函式。
例子:
class GameObject
{
public GameObject()
{
Console.WriteLine("物體位置");
}
}
class Animal : GameObject
{
public Animal(int i)
{
Console.WriteLine("來了{0}只動物", i);
}
}
class Tree : Animal
{
public Tree(int num) : base(num)
{
Console.WriteLine("種了{0}顆樹",num);
}
//通過this呼叫該類引數匹配的建構函式,簡接呼叫了父類
public Tree(int num,string category):this(num)
{
Console.WriteLine("種了{0}顆{1}樹", num,category);
}
}
class Person
{
static void Main(string[] args)
{
Tree gameObject = new Tree(5,"草莓");
Console.ReadKey();
}
}
截圖:
this與base的區別:
語法上:括號裡變數名要與前面建構函式裡的引數名一致
this代表該類的某一個建構函式
base代表父類的某一個建構函式