新Visual C# .NET程序设计教程 教学课件 罗福强 白忠建 杨剑 C# Ch4.pptVIP

  • 9
  • 0
  • 约6.94千字
  • 约 46页
  • 2015-11-19 发布于广东
  • 举报

新Visual C# .NET程序设计教程 教学课件 罗福强 白忠建 杨剑 C# Ch4.ppt

电子科大成都学院精品课程《Visual C# .Net程序设计》 Visual C# .Net 程序设计 电子科大成都学院计算机系 课件制作:罗福强 E-Mail:LFQ501@SOHU.COm 第四章 面向对象的高级程序设计 4.1 类的继承性与多态性 4.2 抽象类与接口 4.3 分部类与命名空间 4.4 委托 4.1 类的继承性与多态性 一、类的继承性 二、类的多态性 一、类的继承性 类的继承性最主要的优点就是能提高代码的可重用性 1.派生类的声明 2.派生类的构造函数 3.密封类 1.派生类的声明 (1) 派生类的特点 可以拥有自己的成员 可以隐式地从基类继承所有成员,包括方法、字段、属性和事件,但私有成员、构造函数和析构函数等除外。 只能从一个类中继承 (2) 一般形式 派生类的示例 2.派生类的构造函数 在C#中,派生类不能继承其基类的构造函数,但通过使用base关键字,派生类构造函数就可以调用基类的构造函数。 当创建派生类对象时,系统首先执行基类构造函数,然后执行派生类的构造函数。 实例4-1演示(源代码见教材) 3.密封类 使用密封类可以阻止一个类的代码被其他类继承 使用密封类的好处: 可以提高应用程序的可靠性和性能。 软件企业通过使用密封类还可以把自己的知识产权保护起来,避免他人共享代码。 在C#中,添加关键字sealed可以声明密封类。 二、类的多态性 为了使用派生类能更改基类的数据和行为,C#提供了两种选择: 1.使用new关键字重新定义类的成员 2. 用virtual和override关键字定义类成员 1.使用new关键字重新定义类的成员 使用new关键字来定义与基类中同名的成员,即可替换基类的成员。 如果基类定义了一个方法、字段或属性,则 new 关键字用于在派生类中创建该方法、字段或属性的新定义。 new 关键字放置在要替换的类成员的返回类型之前。 例如,设基类Person拥有Answer方法,则派生类Student重新定义Answer的格式如下: public new string Answer() { //代码行 } 注,完整代码请参见教材 2. 用virtual和override关键字定义类成员 “使用new声明类的成员”的缺陷是仍然可以通过强制类型转换来继续访问基类的成员。 为了使派生类的实例完全替换来自基类的成员,在C#中,首先在基类中用virtual 关键字标识虚拟成员,然后在派生类中用 override 关键将基类的虚拟成员覆盖掉。 例如,基类Person及其派生类Student的Answer方法书写格式如下: 特别注意 使用virtual和override时要注意以下几点: (1)字段不能是虚拟的,只有方法、属性、事件和索引器才可以是虚拟的; (2)使用virtual修饰符后,不允许再使用static、abstract或override修饰符; (3)派生类对象即使被强制转换为基类对象,所引用的仍然是派生类的成员; (4)派生类可以通过密封来停止虚拟继承,此时派生类的成员使用sealed override声明。 实例4-2演示(源代码见教材) 4.2 抽象类与接口 一、抽象类 二、接口 三、抽象类与接口的比较 一、抽象类 1. 抽象类的声明 2. 抽象属性 3. 抽象方法 1. 抽象类的声明 在C#中,抽象类使用关键字abstract声明. 一般形式如下: public abstract class 抽象类名 { // 类的成员 } 抽象类的特点: 抽象类是用来作为基类的,不能直接实例化,而且只能使用abstract关键字来标识。抽象类的用途是提供多个派生类可共享的基类的公共定义。 抽象类可以包含抽象的成员,如抽象属性和抽象方法,也可以包含非抽象的成员,甚至还可以包含虚方法。 2. 抽象属性 抽象属性的特点 抽象属性声明不提供属性访问器的实现,它只声明该类支持的属性,而将访问器的实现留给派生类。 抽象属性同样可以是只读的、只写的或可读写的属性。 当派生类从抽象类中继承一个抽象属性时,派生类必须重载该抽象属性。 抽象属性使用abstract关键字来标识 实例4-3演示(源代码参写教材) 3. 抽象方法 抽象方法的特点: 抽象方法声明不提供方法的实现,它必须是一个空方法,而将方法实现留给派生类。 当派生类从抽象类中继承一个抽象方法时,派生类必须重载该抽象方法。 由于抽象方法没有实现,因此,抽象方法不包含常规的方法体,以分号结尾。 抽象方法使用abstract关键字来标识,格式如下: [访问修饰符] abstract 返回值类型 方法名([参数列表]); 其中,访问修饰符不能是private,参数列表可省略。 注意,抽象成员必须在

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档