子类构造方法

public class Test : Test2//子类
{
    public Test():base()
    {
    }

    public Test(int a) : base(a)//将子类构造函数的参数传给父类的构造函数
    {
        //.....
    }

}

public class Test2//父类
{
    public int a;

    public Test2()
    {
    }

    public Test2(int a)
    {
        //.....
    }
}

  

上面的代码是我们在使用继承时,子类和父类的构造函数的写法。构造方法能否被继承,我觉得应该这样理解:

        父类是对子类的抽象,也就是说父类和子类可以合并写成一个类,合并后的类写出来的构造函数,不仅会包含子类的构造函数的内容,还会包含父类的构造函数的内容,所以我觉得这里不能看成是子类继承父类的构造函数,看成是子类调用父类的构造函数应该更合理一些。在继承之后,子类在实例化时,会先调用父类的构造函数,再调用自己的构造函数,和我们不用继承,合并写成一个类的构造函数有异曲同工之妙。所以子类不能继承父类的构造函数。

 

继承中的构造方法一些特殊规定:

子类的构造方法中必须调用父类的构造方法,且将父类的构造方法写在子类构造方法体的第一行。

若子类构造方法没有显示地调用父类的构造方法,则系统默认调用父类中无参数的构造方法。

posted @ 2017-11-23 23:24  ~雨落忧伤~  阅读(281)  评论(0编辑  收藏  举报