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)
{
//.....
}
}
上面的代码是我们在使用继承时,子类和父类的构造函数的写法。构造方法能否被继承,我觉得应该这样理解:
父类是对子类的抽象,也就是说父类和子类可以合并写成一个类,合并后的类写出来的构造函数,不仅会包含子类的构造函数的内容,还会包含父类的构造函数的内容,所以我觉得这里不能看成是子类继承父类的构造函数,看成是子类调用父类的构造函数应该更合理一些。在继承之后,子类在实例化时,会先调用父类的构造函数,再调用自己的构造函数,和我们不用继承,合并写成一个类的构造函数有异曲同工之妙。所以子类不能继承父类的构造函数。
继承中的构造方法一些特殊规定:
子类的构造方法中必须调用父类的构造方法,且将父类的构造方法写在子类构造方法体的第一行。
若子类构造方法没有显示地调用父类的构造方法,则系统默认调用父类中无参数的构造方法。