1、1第 5章 面向对象的高级编程5.1 类的继承与多态性5.2 版本控制5.3 接口 5.4 委托和事件5.5 反射5.6 序列化与反序列化25.1 类的继承与多态性封装:隐藏调用者不需要了解的信息。继承:简化类的设计。多态:类为名称相同的方法提供不同实现方式的能力。35.1.1 基类和扩充类继承表示现实世界中遗传关系的直接模拟。它表示类之间的内在联系以及对属性和操作的共享。45.1.1 基类和扩充类声明扩充类的语法:访问修饰符 class 扩充类名称:基类名称/程序代码扩充类继承了所有定义在基类中数据的定义和方法。但是 扩充类不继承基类的构造函数 。 两种实现继承的方式:类继承和接口继承。 类
2、继承只允许单一继承 ,接口可实现多重继承。 被继承的类叫基类 继承自其他类的类叫扩充类55.1.1 基类和扩充类【 例 5-1】 基类和扩充类的定义及用法。65.1.2 多态性多态性 是指对象可以表示多个类型的能力。在 C#中,多态性的定义是:同一操作作用于不同的类的实例,不同的类将进行不同的解释,最后产生不同的执行结果。3种实现多态性的方法: 通过继承实现多态性。 通过抽象类实现多态性。 通过接口实现多态性。75.1.2 多态性1、虚拟方法 在基类中,如果想让某个方法或者事件被扩充类重写,可以使用修饰符 virtual表明:public virtual void myMethod() /程序
3、代码扩充类则用 override重写 :public override void myMethod() /程序代码85.1.2 多态(续)使用虚拟方法和重写方法时,要注意下面几个方面:虚拟方法不能声明为静态的。Virtual不能和 private一起使用。重写方法的名称、参数个数、类型以及返回值都必须和虚拟方法的一致。95.1.2 多态(续)【 例 5-2】 重写基类的方法。105.1.2 多态(续)2、隐藏基类的方法在扩充类中,可以使用 new关键字来隐藏基类的方法,即使用一个完全不同的方法取代旧的方法。与方法重写不同的是,使用 new关键字时并不要求基类中的方法声明为 virtual,只要在扩充类的方法前声明为 new,就可以隐藏基类的方法。3.在扩充类直接调用基类的方法使用 base关键字