C#继承中的构造函数和析构函数
C# 中在进行类的继承时,子类的构造函数会隐式地调用父类的无参构造函数。但是,如果父类也是从其他类派生的,那么 C# 会根据层次结构找到最顶层的父类,并调用父类的构造函数,然后依次调用各级子类的构造函数。析构函数的执行顺序正好与构造函数相反。
继承中的构造函数和析构函数执行顺序示意图如下图所示。

图 1 继承中的构造函数和析构函数执行顺序示意图
使用代码演示下图所示的继承关系,并分别在父类和子类的构造函数、析构函数中输出相应的提示信息,代码如下。
继承中的构造函数和析构函数执行顺序示意图如下图所示。

图 1 继承中的构造函数和析构函数执行顺序示意图
使用代码演示下图所示的继承关系,并分别在父类和子类的构造函数、析构函数中输出相应的提示信息,代码如下。
class Graph//父类:图形
{
public Graph()
{
Console.WriteLine("父类构造函数");
}
~Graph()
{
Console.WriteLine("父类析构函数");
}
}
class Triangle : Graph//一级子类:三角形类
{
public Triangle()
{
Console.WriteLine("一级子类构造函数");
}
~Triangle()
{
Console.WriteLine("一级子类析构函数");
}
}
class RTriangle : Triangle//二级子类:等边三角形类
{
public RTriangle()
{
Console.WriteLine("二级子类构造函数");
}
~RTriangle()
{
Console.WriteLine("\n二级子类析构函数");
}
}
class Program
{
static void Main(string[] args)
{
RTriangle rt = new RTriangle();//创建二级子类对象
}
}
程序运行结果为:
父类构造函数
一级子类构造函数
二级子类构造函数
二级子类析构函数
一级子类析构函数
父类析构函数
ICP备案:
公安联网备案: