首页 > 编程笔记
C#继承中的构造函数和析构函数
C# 中在进行类的继承时,子类的构造函数会隐式地调用父类的无参构造函数。但是,如果父类也是从其他类派生的,那么 C# 会根据层次结构找到最顶层的父类,并调用父类的构造函数,然后依次调用各级子类的构造函数。析构函数的执行顺序正好与构造函数相反。
继承中的构造函数和析构函数执行顺序示意图如下图所示。
![](/uploads/allimg/240604/2-240604111540630.gif)
图 1 继承中的构造函数和析构函数执行顺序示意图
使用代码演示下图所示的继承关系,并分别在父类和子类的构造函数、析构函数中输出相应的提示信息,代码如下。
继承中的构造函数和析构函数执行顺序示意图如下图所示。
![](/uploads/allimg/240604/2-240604111540630.gif)
图 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();//创建二级子类对象 } }程序运行结果为:
父类构造函数
一级子类构造函数
二级子类构造函数
二级子类析构函数
一级子类析构函数
父类析构函数