1. 程式人生 > >繼承類和基類的建構函式

繼承類和基類的建構函式

1.類的預設建構函式

 

1     public class BaseClass
2     {
3         public BaseClass()
4         { 
5             //
6         }
7     }
8    

2.派生類建構函式

 

預設建構函式

 1  //基類(父類)
 2     public class BaseClass
 3     {
 4         public BaseClass()
 5         { 
 6             //
 7         }
 8
} 9 //繼承類(子類) 10 public class inheritanceClass:BaseClass 11 { 12 public inheritanceClass() 13 { 14 // 15 } 16 }

 

通過VS斷點檢視執行過程。

 

先是到

inheritanceClass建構函式,此時並不進入花括號裡的語句(因為沒有引數,所以不需要進行傳引數給父類)->接著執行BaseClass建構函式的語句塊->再執行inheritanceClasss建構函式的語句塊

帶引數的建構函式
派生類建構函式的引數個數和型別要和父類一致
派生類(型別 引數):base(引數)

 1  //基類(父類)
 2     public class BaseClass
 3     {
 4         string A;
 5         public BaseClass(string a)
 6         {
 7             A = a;
 8         }
 9     }
10     //繼承類(子類)
11     public class inheritanceClass:BaseClass
12     {
13         public inheritanceClass(string w):base(w)
14         {
15 // 16 } 17 }

斷點執行過程和預設建構函式是一樣的。

inheritanceClass建構函式,進行引數傳遞,不進入語句塊->接著執行BaseClass建構函式語句塊->再執行inheritanceClasss建構函式語句塊。


多個層的繼承
 public class GradeFatherClass
    {
        //爺爺類
        private string B;
        public GradeFatherClass(string b)
        {
            B = b;
        }
        public void Display(string show)
        {
            Console.WriteLine("爺爺:{0}", show);
        }

    }
    //基類(父類)
    public class BaseClass : GradeFatherClass
    {
        string A;
        public BaseClass(string a):base(a)
        {
            A = a;
        }
        public void Display()
        {
            Console.WriteLine("爸爸:{0}",A);
        }
    }
    //繼承類(子類)
    public class inheritanceClass:BaseClass
    {
        private string W;
        public inheritanceClass(string w):base(w)
        {
            W = w;
        }
        public new void Display()
        {
            Console.WriteLine("我:{0}", W);
        }
    }
GradeFatherClass為第一個父類,BaseClass 是GradeFatherClass的子類.
inheritanceClass又是BaseClass的子類.
所以,
GradeFatherClass是爺爺類,BaseClass是爸爸類,inheritanceClass是兒子類。

多個層的繼承建構函式的執行過程

先到兒子類,進行傳參

 

再到爸爸類,傳參

 

接著到爺爺類。此時就開始執行初始化語句了。

 

 

接著執行爸爸類建構函式語句

 

再執行兒子類建構函式語句