首页 > 编程笔记 > C#笔记

C#继承中的构造函数和析构函数

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

继承中的构造函数和析构函数执行顺序示意图如下图所示。


图 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();//创建二级子类对象
      }
}
程序运行结果为:

父类构造函数
一级子类构造函数
二级子类构造函数
二级子类析构函数
一级子类析构函数
父类析构函数

相关文章