执行顺序:当实例化一个子类对象时,先执行父类的构造函数,再执行子类的构造函数;
特点:默认执行父类的无参构造函数,如果父类没有无参构造函数(声明一个有参构造时会自动取消无参构造,所以,若需要使用无参构造,需要重新声明一个无参构造),子类在声明构造函数时必须用 :base 指明父类要执行的构造函数。
实例:
namespace 继承_继承中的构造函数
{
class Father
{
public Father(int i)
{
Console.WriteLine("这是Father构造函数!");
}
}
class Son : Father
{
public Son(int i) : base(i)
{
Console.WriteLine("这是子类构造函数");
}
public Son(int i,int j) : this (i)
{
Console.WriteLine("这是子类重载构造函数");
}
}
//练习题:有一个打工人基类,有工种,工作内容两个特征,一个工作方法;
//程序员、策划、美术分别继承打工人,请用继承中的构造函数这个知识点,
//实例化三个对象 ,分别是程序员、策划、美术。
class WorkHuman
{
public string workType;
public string workContent;
public WorkHuman(int i) { Console.WriteLine("这是打工人的构造函数!"); }
public void WorkMethod()
{
}
}
class Programmer : WorkHuman
{
public Programmer(int i) : base (i)
{
Console.WriteLine("这是程序员的构造函数!");
}
}
class Planner : WorkHuman
{
public Planner(int i) : base(i)
{
Console.WriteLine("这是策划的构造函数!");
}
}
class ProductionDesigner : WorkHuman
{
public ProductionDesigner(int i) : base(i)
{
Console.WriteLine("这是美术的构造函数!");
}
}
internal class Program
{
static void Main(string[] args)
{
Son son = new Son(1,6);
Planner planner = new Planner(1);
ProductionDesigner productionDesigner = new ProductionDesigner(1);
}
}
}