描述构造函数如何在继承中使用
来源:学生作业帮助网 编辑:六六作业网 时间:2024/11/23 03:08:59
描述构造函数如何在继承中使用
描述构造函数如何在继承中使用
描述构造函数如何在继承中使用
继承技术是面向对象编程的主要特征.面向对象编程语言引入继承机制,可以实现代码重用,提高编程效率.C#只支持单继承,即一个派生类只能有一个基类.
类的继承性是指一个类定义既可以具有其他类的数据成员、属性成员、方法成员等,也可以使其他类具有自己的数据成员、属性成员、方法成员等.在类的继承中,被继承的类叫基类或父类,继承的类叫派生类或子类.
派生类通常定义的语法格式为:
public class 派生类名称 : 基类名称
public:访问控制修饰符,访问控制修饰符可以是public、protected和private.通常都使用public以保证类的开放性,并且public可以省略,因为类定义的访问控制默认为是pulbic.
“:基类名称”:表示所继承的类.
在类的继承中,作为基类的数据成员通常使用protected修饰符,而不使用private修饰符.因为如果在基类中使用private修饰符声明数据成员,则其成员将不允许派生类成员访问,而protected修饰符,既能保证数据成员不被直接访问,又允许其派生类成员访问.
在创建派生类对象时,调用构造函数的顺序是先调用基类构造函数,再调用派生类的构造函数,以完成为数据成员分配内存空间并进行初始化的工作.
如果派生类的基类本身是另一个类的派生类,则构造函数的调用次序按由高到低顺序依次调用.例如,假设A类是B类的基类,B类是C类的基类,则创建C类对象时,调用构造函数的顺序为,先调用A类的构造函数,再调用B类的构造函数,最后调用C类的构造函数.
向基类构造函数传递参数,必须通过派生类的构造函数实现,其格式如下:
public 派生类构造函数名(形参列表):base(向基类构造函数传递的实参列表)
“base”是C#关键字,表示调用基类的有参构造函数.
传递给基类构造函数的“实参列表”通常包含在派生类构造函数的“形参列表”中.
密封类是不允许其他类继承的类.密封方法是不允许派生类重载的方法
定义密封类与密封方法需要使用sealed关键字,定义密封类的格式为:
访问修饰符 sealed class 类名称
定义密封方法的格式为:
访问修饰符 sealed 返回类型 方法名称(参数列表)
多态性就是指在程序运行时,执行的虽然是一个调用方法的语句,却可以根据派生类对象的类型不同完成方法的不同的具体实现.
在类的继承中,C#允许在基类与派生类中声明具有同名的方法,而且同名的方法可以有不同的代码,也就是说在基类与派生类的相同功能中可以有不同的具体实现,从而为解决同一问题提供多种途径.
要实现继承的多态性,在类定义方面,必须分别用virtual关键字与override关键字在基类与派生类中声明同名的方法,在具体实现上通常是通过传递对象的途径,并且通常基类有两个以上的派生类,或者基类的派生类其下又有派生类.
基类中的声明格式:
public virtual 返回类型 方法名称(参数列表)
派生类中的声明格式:
public override 返回类型 方法名称(参数列表)
其中,基类与派生类中的方法名称与参数列表必须完全一致.
在派生类中声明与基类同名的方法,也叫方法重载.在派生类重载基类方法后,如果想调用基类的同名方法,可以使用base关键字.在派生类定义中调用基类方法的格式为:
base 基类方法名称(参数列表);
抽象类是指基类的定义中声明不包含任何实现代码的方法,实际上就是一个不具有任何具体功能的方法.这样的方法唯一的作用就是让派生类重写.在基类定义中,只要类体中包含一个抽象方法,该类即为抽象类.在抽象类中也可以声明一般的虚方法.声明抽象类与抽象方法均需使用关键字abstract,抽象方法不是一般的空方法,抽象方法声明时,没有方法体.
抽象方法与虚方法的作用相同,两者均是实现多态的基础,因而两者均允许派生类重载.只不过对于基类中的抽象方法,在其派生类中要求必须重写,而虚方法则不要求一定重写.抽象方法一般应用于基类中的该方法不应有具体实现功能,而虚方法则应用于基类中的该方法应该有具体的实现功能.
在C#中,Array类是一个抽象类,该类提供创建、操作、搜索和排序数组的方法,因而在公共语言运行库中用作所有数组的基类.
在C#中,Math类是一个密封类,该类为三角函数、对数函数和其他通用数学函数提供常数和静态方法.Convert类也是一个密封类,该类将一个基本数据类型转换为另一个基本数据类型.