C#课件第十二次课.ppt
文本预览下载声明
继承 继承是面向对象程序设计的主要特征之一,它可以让您重用代码,可以节省程序设计的时间。继承就是在类之间建立一种相交关系,使得新定义的派生类的实例可以继承已有的基类的特征和能力,而且可以加入新的特性或者是修改已有的特性建立起类的新层次 被继承的类叫基类(父类) 继承自其他类的类叫派生类(或子类) 声明扩充类的语法: [访问修饰符] class 派生类名称:基类名称 { //程序代码 } c#仅支持类单继承--一个类只能有一 个父类(基类) 多态 多态性是指类为名称相同的方法提供不同实现方式的能力。利用多态性,就可以调用类中的某个方法而无需考虑该方法是如何实现的。 有以下几种实现多态性的方式。 1.是通过重载实现多态性 2.是通过继承实现多态性 3.是通过抽象类实现多态性 4.是通过接口实现多态性 C#的多态性 前面学的方法重载,是最常用也是最基本的多态性,那么多态性到底是什么概念呢? 通过一个类可以调用自己方法的重载或者派生类方法、属性和事件的成员就叫做多态性了。 下面我们再学1种比较好的调用派生类的多态性方法-----虚方法(Virtual) 。而这个方法也是在项目中广泛采用的多态性方法之一。 重写基类虚方法实现多态 谈到虚方法我们不能不说一下,继承,因为虚方法的前提条件就是用一个父类派生一个派生类出来。用派生类的方法去重写我们的虚方法。 首先我们要明确一个概念。在面向对象的编程当中,我们的派生类可以无限极的返还给我们大的父类。父类可以和派生类兼容,但是我们的父类是不能返回给我们的派生类的。 基于这个原理,我们来看一下现在的内容。 使用虚拟方法与重写方法时注意: 1) 虚拟方法不能声明为静态(static)的。因为静态的方法是应用在类这一层次的,而多态性只能在对象上运作。 2) virtual不能和private一起使用。因为声明为private就无法在扩充类中重写了。 3) 重写方法的名称、参数个数、类型以及返回值都必须和虚拟方法的一致 抽象类的定义 抽象类的特点 类有两种:一种是具体类,另一种是抽象类。具体类可以实例化,抽象类不可以实例化。 在类声明中使用 abstract 修饰符以指示类只能是其他类的基类。 public class Animal{} public abstract class Animal{ } 抽象类的定义格式 abstract class ClassOne { //类实现 } 访问修饰符 派生类的基类 不能实例化 abstract class Base { // 成员变量 int basevar; // 成员函数 abstract void base_fun1(parameters); // 无法实现 ……. } 抽象方法 class Derived : Base { // 成员变量 int derivedvars; // 成员函数 override void base_fun1(parameters) { // 实际实现 ... } 抽象类 派生类 提供 重写方法 原型 必须重写 抽象类不能实例化。 从抽象类派生的非抽象类必须包括继承的所有抽象方法的实现。 在方法声明中使用 abstract 修饰符以指示此方法不包含实现。 public abstract class Animal { public abstract void Speak(); } 抽象类继承 public abstract class Animal { public abstract void Speak(); } public class Monkey:Animal { public override void Speak(){ Console.WriteLine(“Monkey Speak…”); } } 抽象方法具有以下特性: (1)抽象方法是隐式的 virtual 方法。 (2)只允许在抽象类中使用抽象方法声明。 (3)因为抽象方法声明不提供实现,所以没有方法体; (4)在抽象方法声明中使用 static 或 virtual 修饰符是错误的。 (5)在派生类中,通过包括使用 override 修饰符的属性声明可以重写抽象的继承属性。 密封类 密封类不能用作基类。 它也不能是抽象类。 密封类主要用于防止派生。 //使用sealed关键字创建密封类 public sealed class Animal{ } 网络安全课程体系(两年制) 银河信息技术学院 沈慧芳 第十二次课 类的继承 课程目标 理解面向对象编程主要特征之继承 在C#中使用继承 理解面向
显示全部