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

上传人:E**** 文档编号:89403895 上传时间:2019-05-24 格式:PPT 页数:45 大小:853.50KB
返回 下载 相关 举报
Visual C# .NET程序设计教程 教学课件 ppt 罗福强 白忠建 杨剑 C# Ch4_第1页
第1页 / 共45页
Visual C# .NET程序设计教程 教学课件 ppt 罗福强 白忠建 杨剑 C# Ch4_第2页
第2页 / 共45页
Visual C# .NET程序设计教程 教学课件 ppt 罗福强 白忠建 杨剑 C# Ch4_第3页
第3页 / 共45页
Visual C# .NET程序设计教程 教学课件 ppt 罗福强 白忠建 杨剑 C# Ch4_第4页
第4页 / 共45页
Visual C# .NET程序设计教程 教学课件 ppt 罗福强 白忠建 杨剑 C# Ch4_第5页
第5页 / 共45页
点击查看更多>>
资源描述

《Visual C# .NET程序设计教程 教学课件 ppt 罗福强 白忠建 杨剑 C# Ch4》由会员分享,可在线阅读,更多相关《Visual C# .NET程序设计教程 教学课件 ppt 罗福强 白忠建 杨剑 C# Ch4(45页珍藏版)》请在金锄头文库上搜索。

1、2019/5/24,1,电子科大成都学院精品课程Visual C# .Net程序设计,Visual C# .Net 程序设计,电子科大成都学院计算机系 课件制作:罗福强 E-Mail:LFQ501SOHU.COm,2019/5/24,电子科大成都学院精品课程Visual C# .Net程序设计,2,第四章 面向对象的高级程序设计,4.1 类的继承性与多态性 4.2 抽象类与接口 4.3 分部类与命名空间 4.4 委托,2019/5/24,电子科大成都学院精品课程Visual C# .Net程序设计,3,4.1 类的继承性与多态性,一、类的继承性 二、类的多态性,返回,2019/5/24,电子科

2、大成都学院精品课程Visual C# .Net程序设计,4,一、类的继承性,类的继承性最主要的优点就是能提高代码的可重用性 1派生类的声明 2派生类的构造函数 3密封类,2019/5/24,电子科大成都学院精品课程Visual C# .Net程序设计,5,1派生类的声明,(1) 派生类的特点 可以拥有自己的成员 可以隐式地从基类继承所有成员,包括方法、字段、属性和事件,但私有成员、构造函数和析构函数等除外。 只能从一个类中继承 (2) 一般形式,2019/5/24,电子科大成都学院精品课程Visual C# .Net程序设计,6,派生类的示例,2019/5/24,电子科大成都学院精品课程Vis

3、ual C# .Net程序设计,7,2派生类的构造函数,在C#中,派生类不能继承其基类的构造函数,但通过使用base关键字,派生类构造函数就可以调用基类的构造函数。 当创建派生类对象时,系统首先执行基类构造函数,然后执行派生类的构造函数。 实例4-1演示(源代码见教材),2019/5/24,电子科大成都学院精品课程Visual C# .Net程序设计,8,3密封类,使用密封类可以阻止一个类的代码被其他类继承 使用密封类的好处: 可以提高应用程序的可靠性和性能。 软件企业通过使用密封类还可以把自己的知识产权保护起来,避免他人共享代码。 在C#中,添加关键字sealed可以声明密封类。,2019/

4、5/24,电子科大成都学院精品课程Visual C# .Net程序设计,9,二、类的多态性,为了使用派生类能更改基类的数据和行为,C#提供了两种选择: 1使用new关键字重新定义类的成员 2. 用virtual和override关键字定义类成员,2019/5/24,电子科大成都学院精品课程Visual C# .Net程序设计,10,1使用new关键字重新定义类的成员,使用new关键字来定义与基类中同名的成员,即可替换基类的成员。 如果基类定义了一个方法、字段或属性,则 new 关键字用于在派生类中创建该方法、字段或属性的新定义。 new 关键字放置在要替换的类成员的返回类型之前。 例如,设基类

5、Person拥有Answer方法,则派生类Student重新定义Answer的格式如下: public new string Answer() /代码行 注,完整代码请参见教材,2019/5/24,电子科大成都学院精品课程Visual C# .Net程序设计,11,2. 用virtual和override关键字定义类成员,“使用new声明类的成员”的缺陷是仍然可以通过强制类型转换来继续访问基类的成员。 为了使派生类的实例完全替换来自基类的成员,在C#中,首先在基类中用virtual 关键字标识虚拟成员,然后在派生类中用 override 关键将基类的虚拟成员覆盖掉。 例如,基类Person及其

6、派生类Student的Answer方法书写格式如下:,注,完整代码请参见教材,2019/5/24,电子科大成都学院精品课程Visual C# .Net程序设计,12,特别注意,使用virtual和override时要注意以下几点: (1)字段不能是虚拟的,只有方法、属性、事件和索引器才可以是虚拟的; (2)使用virtual修饰符后,不允许再使用static、abstract或override修饰符; (3)派生类对象即使被强制转换为基类对象,所引用的仍然是派生类的成员; (4)派生类可以通过密封来停止虚拟继承,此时派生类的成员使用sealed override声明。 实例4-2演示(源代码见

7、教材),返回,2019/5/24,电子科大成都学院精品课程Visual C# .Net程序设计,13,4.2 抽象类与接口,一、抽象类 二、接口 三、抽象类与接口的比较,返回,2019/5/24,电子科大成都学院精品课程Visual C# .Net程序设计,14,一、抽象类,1. 抽象类的声明 2. 抽象属性 3. 抽象方法,2019/5/24,电子科大成都学院精品课程Visual C# .Net程序设计,15,1. 抽象类的声明,在C#中,抽象类使用关键字abstract声明. 一般形式如下: public abstract class 抽象类名 / 类的成员 抽象类的特点: 抽象类是用来作

8、为基类的,不能直接实例化,而且只能使用abstract关键字来标识。抽象类的用途是提供多个派生类可共享的基类的公共定义。 抽象类可以包含抽象的成员,如抽象属性和抽象方法,也可以包含非抽象的成员,甚至还可以包含虚方法。,2019/5/24,电子科大成都学院精品课程Visual C# .Net程序设计,16,2. 抽象属性,抽象属性的特点 抽象属性声明不提供属性访问器的实现,它只声明该类支持的属性,而将访问器的实现留给派生类。 抽象属性同样可以是只读的、只写的或可读写的属性。 当派生类从抽象类中继承一个抽象属性时,派生类必须重载该抽象属性。 抽象属性使用abstract关键字来标识 实例4-3演示

9、(源代码参写教材),2019/5/24,电子科大成都学院精品课程Visual C# .Net程序设计,17,3. 抽象方法,抽象方法的特点: 抽象方法声明不提供方法的实现,它必须是一个空方法,而将方法实现留给派生类。 当派生类从抽象类中继承一个抽象方法时,派生类必须重载该抽象方法。 由于抽象方法没有实现,因此,抽象方法不包含常规的方法体,以分号结尾。 抽象方法使用abstract关键字来标识,格式如下: 访问修饰符 abstract 返回值类型 方法名(参数列表); 其中,访问修饰符不能是private,参数列表可省略。 注意,抽象成员必须在抽象类中声明,但抽象类不要求必须包含抽象成员。,20

10、19/5/24,电子科大成都学院精品课程Visual C# .Net程序设计,18,抽象方法示例(完整代码请参见教材,public abstract class Person /这是一个抽象类 /声明抽象方法成员,注意抽象方法无方法体 public abstract string Answer(); public class Student : Person /重载基类的抽象方法 public override string Answer() /代码行 ,2019/5/24,电子科大成都学院精品课程Visual C# .Net程序设计,19,二、接口,1. 接口的声明 2. 接口的实现 3.

11、继承多个接口,2019/5/24,电子科大成都学院精品课程Visual C# .Net程序设计,20,1. 接口的声明,说明: 默认访问修饰符为public,还可以是protected、internal和private; 为了区别类,接口名的命名时建议使用大写字母I打头; 基接口列表可省略,表示接口也具有继承性,从多个基口继承,基接口名之间用逗号分隔。 接口成员可以是属性、方法、索引器和事件,不能包含字段、构造函数等。 所有接口成员隐式地具有了public访问修饰符,因此,接口成员不能添加任何访问修饰符。,2019/5/24,电子科大成都学院精品课程Visual C# .Net程序设计,21,

12、2. 接口的实现,接口主要用来定义一个规则,让企业内部或行业内部的软件开发人员按标准去实现应用程序的功能。 因此,必须要有类或结构来继承所定义的接口并实现它,否则定义接口就毫无意义。 相关示例请参见教材,2019/5/24,电子科大成都学院精品课程Visual C# .Net程序设计,22,3. 继承多个接口,一个接口可以同时继承多个基接口的定义,一个类或结构也可以同时继承多个接口的定义。 当类继承的多个接口中存在同名的成员时,在实现时为了区分是从哪个接口继承来的,C#建议使用显示实现接口的方法,即使用接口名称和一个句点命名该类成员。 显示实现的成员不能带任何访问修饰符,也不能通过类的实现来引

13、用或调用,必须通过所属的接口来引用或调用。 实例4-4演示(源代码参写教材),2019/5/24,电子科大成都学院精品课程Visual C# .Net程序设计,23,三、抽象类与接口的比较,抽象类是一种不能实例化的类,抽象类可以包含抽象成员,也可以包含非抽象成员,即抽象类可以是完全实现的,也可以是部分实现的,或者完全不实现的。抽象类可以用来封装所有派生类的通用功能。 与抽象类不同的是,接口顶多像一个完全没有实现的只包含抽象成员的抽象类,因此无法使用接口来封装所有派生类的通用功能,接口更多地用来制定程序设计开发规范,接口的代码实现由开发者完成。 C#规定一个类只能从一个基类派生,但允许从多个接口

14、派生。 抽象类为管理组件版本提供了一个简单易行的方法。通过更新基类,所有派生类都将自动进行相应改动。而接口在创建后就不能再更改,如果需要修改接口,必须创建新的接口。,返回,2019/5/24,电子科大成都学院精品课程Visual C# .Net程序设计,24,4.3 分部类与命名空间,一、分部类的定义 二、使用命名空间,返回,2019/5/24,电子科大成都学院精品课程Visual C# .Net程序设计,25,一、分部类的定义,C# 2.0允许将类、结构或接口的定义拆分到两个或多个源文件中,让每个源文件只包含类型定义的一部分,编译时编译器自动把所有部分组合起来进行编译。 使用分部类的好处 一

15、个类的源代码可以分布于多个独立文件中,在处理大型项目时,过去很多只能由一个人进行的编程任务,现在可以由多个人同时进行,这样将大大加快了程序设计的工作进度。 Visual Studio 2005利分部类自动生成最基本的源代码,程序员只需编写项目的业务处理逻辑代码,编译时Visual Studio 2005会自动把编写的代码与自动生成的代码进行合并编译。 若要拆分类定义,可使用 partial 关键字修饰符。,2019/5/24,电子科大成都学院精品课程Visual C# .Net程序设计,26,分部类示例,2019/5/24,电子科大成都学院精品课程Visual C# .Net程序设计,27,注

16、意事项,处理分部类的定义时需遵循以下几个规则: (1)同一类型的各个部分的所有分部类的定义都必须使用partial进行修饰。 (2)partial修饰符只能出现在紧靠关键字 class、struct或interface前面的位置。 (3)分部类的各部分或者各个源文件都可以独立引用类库,且坚持“谁使用谁负责添加引用”的原则。 (4)分部类的定义中允许使用嵌套的分部类。 (5)同一类型的各个部分的所有分部类的定义都必须在同一程序集或同一模块(.exe 或 .dll 文件)中进行定义,分部定义不能跨越多个模块,2019/5/24,电子科大成都学院精品课程Visual C# .Net程序设计,28,二、使用命名空间,1. .NET Framework的常用命名空间 2. 自定义命名空间 3. 引用命名空间中的类,2019/5/24,电子科大成都学院精品课程Visual C# .Net程序设计,2

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号