C#编程-实现继承

在这里插入图片描述

在这里插入图片描述

C#允许您通过扩展现有类的功能以创建新类来实现继承。

在这里插入图片描述

从基类创建派生类

使用以下语法在C#中创建派生类:

	class <derived_class>:<base_class>
	{
   
		...
	}

确定继承的层次结构
要确定继承层次结构,必须检查派生类与基类之间的关系种类。确保派生类是一种基类。
请考虑以下场景。您有Emoloyee、Manager和Designer类。您需要Employee类的属性在Manager和Designer类中存在。您可以使用任何以下代码段来确保此操作:

	class Employee
	{
   
		public void Calc_Leave
		{
   
			...
		}
	}
	class Manager
	{
   
		Employee e;
		public void leave()
		{
   
			e.Calc_leave()
		}
	}
	class Designer
	{
   
		Employee e;
		public void leave()
		{
   
			e.Calc_Leave()
		}
	}
	class Employee
	{
   
		public void Calc_Leave()
		{
   
			...
		}
	}
	class Manager:Employee
	{
   
		public void leave()
		{
   
			Calc_Leave();  /*The function of the base class is available here */
		}
	}
	class Designer :Employee
	{
   
		public void leave()
		{
   
			Calc_Leave();  /* The function of the base class is avaiable here */
		}
	}

从语法上来说 ,上述代码段没有任何错误。然而,这些代码段之一描述了利用关系,另一代码段描述了类之间的继承。

要选择更恰当的方法来创建 Manager和Designer类,您必须分析类之间的关系。由于经理和设计人员都是雇员,所以在经理和雇员以及设计人员和雇员之间有“某种”关系。因此,从Employee类继承Manager和Designer类比在Manager和Designer类中单独创建Employee类的实例以访问Employee类的属性更为恰当。因此,在此场景中第二个代码比第一个代码更恰当。

派生类中的构造函数 调用
创建派生类的对象时,将执行该派生类以及基类的构造函数。构造函数以基类到派生类的顺序调用。但是,析构函数的执行由垃圾回收器控制,它们的调用顺序无法确定。

以下代码显示了派生类中构造函数的调用顺序:

	using System;
	class Base
	{
   
		public Base()
		{
   
			Console.WriteLine("Constructor of Base");
		}
		~Base()
		{
   
			Console.WriteLine("Destructor of Base");
		}
	}
	class Derived :Base
	{
   
		public Derived()
		{
   
			Console.WriteLine

你可能感兴趣的:(C#编程,c#)