C#派生类的构造函数

 用派生类声明对象,(初始化)调用构造函数,会调用两次。先调用父类中构造函数,再调用子类构造函数。

上代码:

namespace _020_派生类的构造函数
{
    class BaseClass                                        //***********************父类******************************//
    {
        int x;
        public BaseClass() {                                        //父类无参构造函数
            Console.WriteLine("x的值是" + x);
            Console.WriteLine("父类无参构造函数被调用");
            Console.WriteLine();
        }
        public BaseClass(int x) {                                  //父类有参构造函数
            this.x = x;
            Console.WriteLine("x的值是" + x);
            Console.WriteLine("父类有参构造函数被调用");
            Console.WriteLine();
        }
    }
}


namespace _020_派生类的构造函数
{
    class DreivedClass:BaseClass        //***********************子类继承父类******************************//
    {
        int y;
        public DreivedClass() {                                                 //子类无参构造函数
            Console.WriteLine("y的值是" + y);
            Console.WriteLine("子类的无参构造函数被调用");
            Console.WriteLine();
        }
        public DreivedClass(int y)                                            //子类有参构造函数
        {
            this.y = y;
            Console.WriteLine("y的值是" + y);
            Console.WriteLine("子类的有参构造函数被调用");
            Console.WriteLine();
        }

        public DreivedClass(int x,int y):base(x)
        {
            this.y = y;
            Console.WriteLine("y的值是" + y);
            Console.WriteLine("子类的有参构造函数被调用");
            Console.WriteLine();
        }
    }


 namespace _020_派生类的构造函数
{
    class Program
    {
        static void Main(string[] args)
        {
            DreivedClass d1 = new DreivedClass();                     //无参
            DreivedClass d2 = new DreivedClass(1);                   //1参
            DreivedClass d3 = new DreivedClass(1, 2);               //2参

            Console.ReadKey();
        }
    }
}

运行结果:

C#派生类的构造函数