• 关于C#中派生类调用基类构造函数的理解


    (1)当基类中没有自己编写的构造函数时,派生类默认条用基类的构造函数 
    (2)当基类中有自己编写的构造函数时,要在基类中添加无参的构造函数 

    Java代码  收藏代码
    1. public class MyBaseClass  
    2.    {          
    3.        public MyBaseClass() { }  
    4.        public MyBaseClass(int i)  
    5.        {  
    6.   
    7.            Console.WriteLine("我是基类带一个参数的构造函数");  
    8.   
    9.        }  
    10.   
    11.    }  
    12.   
    13.    public class MyDerivedClass : MyBaseClass  
    14.    {  
    15.         
    16.   
    17.        public MyDerivedClass()   :         {  
    18.   
    19.            Console.WriteLine("我是子类无参构造函数");  
    20.   
    21.        }  
    22.   
    23.        public MyDerivedClass(int i)         {  
    24.   
    25.            Console.WriteLine("我是子类带一个参数的构造函数");  
    26.   
    27.        }  
    28.   
    29.        public MyDerivedClass(int i, int j)         {  
    30.   
    31.            Console.WriteLine("我是子类带二个参数的构造函数");  
    32.   
    33.        }  
    34.   
    35.    }  
    36.   
    37.    class Program  
    38.    {  
    39.        static void Main(string[] args)  
    40.        {  
    41.            MyDerivedClass m = new MyDerivedClass();  
    42.        }  
    43.    }  


    (3)在基类中有自己编写的构造函数并且在基类中没有添加无参的构造函数时,要在派生类中是用Base指定基类的构造函数 

    Java代码  收藏代码
    1. public class MyBaseClass  
    2.    {          
    3.      public MyBaseClass(int i)  
    4.        {  
    5.   
    6.            Console.WriteLine("我是基类带一个参数的构造函数");  
    7.   
    8.        }  
    9.   
    10.    }  
    11.   
    12.    public class MyDerivedClass : MyBaseClass  
    13.    {  
    14.         
    15.   
    16.        public MyDerivedClass()   : base(1)//使用Base指定基类中的构造函数  
    17.        {  
    18.   
    19.            Console.WriteLine("我是子类无参构造函数");  
    20.   
    21.        }  
    22.   
    23.        public MyDerivedClass(int i)  : base(i)  
    24.        {  
    25.   
    26.            Console.WriteLine("我是子类带一个参数的构造函数");  
    27.   
    28.        }  
    29.   
    30.        public MyDerivedClass(int i, int j) : base(i)  
    31.        {  
    32.   
    33.            Console.WriteLine("我是子类带二个参数的构造函数");  
    34.   
    35.        }  
    36.   
    37.    }  
    38.   
    39.    class Program  
    40.    {  
    41.        static void Main(string[] args)  
    42.        {  
    43.            MyDerivedClass m = new MyDerivedClass();  
    44.        }  
    45.    }  



    注: 初始化的顺序是从基类到派生类。初始化时首先会调用基类的构造函数初始化基类,然后调用派生类的构造函数初始化派生类。

  • 相关阅读:
    hdu 3342 Legal or Not 拓排序
    hdu 1596 find the safest road Dijkstra
    hdu 1874 畅通工程续 Dijkstra
    poj 2676 sudoku dfs
    poj 2251 BFS
    poj Prime Path BFS
    poj 3278 BFS
    poj 2387 Dijkstra 模板
    poj 3083 DFS 和BFS
    poj 1062 昂贵的聘礼 dijkstra
  • 原文地址:https://www.cnblogs.com/gc2013/p/3807982.html
Copyright © 2020-2023  润新知