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