• 子类构造函数会默认调用父类无参构造函数


    1.调用父类无参构造函数是默认的!

    子类的构造方法默认都去访问了父类的无参构造方法:在子类中的构造方法后都有一行默认语句 base()

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    class Fu
    {   public Fu()
        {
            Console.WriteLine("fu");
        }
    }
    class Zi : Fu
    {
        public Zi()
            : base()//不管是否显式调用,控制台都会输出fu
        {
            Console.WriteLine("zi");
        }
    }
    Zi z = new Zi();

    先执行父类的构造函数把父类初始化完成,再初始化子类的。

     

    2.如何访问父类的有参构造函数?

    可以通过super(参数)去访问父类中的有参构造函数。可以通过this(参数...)去访问本类中的其他构造函数。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    class Fu
        public Fu(int a)
        {
            Console.WriteLine("fu"+a);
        }
    }
    class Zi : Fu
        public Zi():base(0)//调用父类有参构造函数
        {
            Console.WriteLine("zi");
        }
        public Zi(int a):base(a)
        {
            Console.WriteLine("zi"+a);
        }
    }

    如果定义了构造函数,则类就不会有默认的无参构造函数;如果父类中没有默认的,则子类构造函数必须显示调用父类的构造函数

  • 相关阅读:
    CTFHub_技能树_文件上传
    QT入门-重载的信号槽
    QT入门-自定义信号
    C++: xx does not name a type报错
    HDU1166 敌兵布阵
    洛谷P2574 XOR的艺术(线段树)
    P3373 【模板】线段树 2(板子好题)
    SP1716 GSS3
    QT入门-自定义槽函数
    Educational Codeforces Round 87 (Rated for Div. 2) D. Multiset(树状数组/好题)
  • 原文地址:https://www.cnblogs.com/mcad/p/4193266.html
Copyright © 2020-2023  润新知