1. 程式人生 > 其它 >c#基礎-繼承-12.繼承中的建構函式

c#基礎-繼承-12.繼承中的建構函式

技術標籤:c#c#

特點:在子類物件例項化時,預設會先呼叫父類的建構函式,一直往上找父親。從老祖宗開始執行,一代一代往下。

例子:

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代表父類的某一個建構函式