c# 中 子类不继承父类的构造函数 但是子类默认调用父类的构造函数,这两句话感觉好矛盾呀,请C神给

c# 中 子类不继承父类的构造函数 但是子类默认调用父类的构造函数,这两句话感觉好矛盾呀,请C神给予详细解答,跪谢!!

通过一个程序来解释

using System;

namespace ConsoleApplication1
{
    // 这个是父类
    public class MyBase
    {
        public MyBase()
        {
            Console.WriteLine("MyBase构造函数");
        }
    }
    
    // 这个是子类,继承了父类
    public class MyClass : MyBase
    {
        public MyClass()
        {
            Console.WriteLine("MyClass构造函数");
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            // 实例化一个子类
            MyClass myc = new MyClass();
            Console.ReadLine();
        }
    }
}

运行结果

从运行结果看出:

(1)实例化子类MyClass时,先调用了父类的构造函数,然后再调用子类的构造函数。这就是“子类默认调用父类的构造函数”。

(2)“子类不继承父类的构造函数”的含义是:子类的构造函数与父类的构造函数之间没有“重写”和“覆盖”关系;只有“调用”关系,也就是实例化子类时先调用父类的构造函数,再调用子类的构造函数,如图所示以及如(1)所述。

温馨提示:答案为网友推荐,仅供参考