...父类的构造函数 但是子类默认调用父类的构造函数,这两句话感觉好矛盾...

发布网友 发布时间:2024-10-23 23:56

我来回答

1个回答

热心网友 时间:2024-10-27 15:26

通过一个程序来解释

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)所述。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com