文档介绍:1
第6章继承及多态性
C#是一种面向对象的编程语言,它同样具有面向对象编程的一些特点。前面我们已经详细了解了类、对象、属性和构造函数等,它们是面向对象的基础知识,这里我们为大家讲解面向对象编程的更深层次的问题,这些深入的问题包括了继承性、多态性和异常等其他一些相关的知识。
继承性是从现有的类中派生出新类的功能,它能分析多态性的细微差别,并允许创建类层次结构,使用继承可以创建一个定义了多个相关项目共有特性的通用类;多态性对于初学者来说比较难以接受,要使多态发挥作用需要有复杂的条件;异常是C#中处理错误的机制。除了这些知识我们还将为你介绍C#中的作用域、抽象类和自定义异常处理等知识,本章的学习将为深入了解C#面向对象程序设计打下坚实的基础。
2
本章学习要点
了解继承的概念
掌握继承的使用方法
了解作用域和继承的关系
掌握抽象类
掌握重写成员
了解构造函数和继承的关系
掌握多态性
掌握异常处理
3
继承
继承是面向对象程序设计中一个很重要的特性,它是关于一个类怎么从另一个类中共享特性和行为的术语。在C#中继承类称为派生类或子类,被继承类称为基类或父类。如果一个派生类继承一个基类,那么这个派生类会从其基类中继承得到所有的操作、属性、特性、事件以及这些内容的实现方法,而基类中实例构造函数、析构函数和表态构造函数不会被继承,同时也不会继承那些显式拒绝访问的成员。
派生类能够继承基类的方法、特性等,但继承得到的成员也受作用域的限制,即使派生类继承得到基类成员,也可能无法访问。对于作用域和继承的关系,我们将在下面的章节中为大家详细讲解。
作用域和继承
类中的实例变量有三种声明方式:public、protect和private。它们来控制访问成员的权限,继承一类不会超越private访问的限制。尽管一个派生类拥有其基类的所有成员,但它依然受到这三种声明方式的限制。
C#中派生类无权访问其基类的private成员,但可以访问其public成员。派生类和外部代码都可以访问public成员。
4
重写成员
在基类中的成员可能执行与派生类中同名成员的不同任务,或者派生类中成员必须提供基类中对应抽象成员的实现方式,这种过程称为重写。本节将详细为大家讲解重写成员的相关知识,同时详细介绍base关键字的使用方法。
5
抽象类与继承
需要时我们创建一个基类,该类本身不提供已经实现的方法,只定义了所有子类共享的一般形式,至于实现方法的内容交给子类去填充。在这种情况下就需要一些方法来确保子类继承并实现基类中方法的必要条件,这里我们可以使用抽象类。定义抽象类的一般形式如下所示:
public abstract class A
{
…..
}
6
继承和构造函数
基类成员的初始化工作由基类的构造函数完成,而派生类的初始化工作由派生类的构造函数完成。这就产生了派生类构造函数的执行顺序问题,即当创建一个派生类的对象时,如何调用基类和派生类的构造函数分别完成各