Visual C# 2010程序设计教程 教学课件 ppt 作者 978-7-302-28609-7 ch05

上传人:E**** 文档编号:89350351 上传时间:2019-05-23 格式:PPT 页数:22 大小:222.50KB
返回 下载 相关 举报
Visual C# 2010程序设计教程 教学课件 ppt 作者 978-7-302-28609-7 ch05_第1页
第1页 / 共22页
Visual C# 2010程序设计教程 教学课件 ppt 作者 978-7-302-28609-7 ch05_第2页
第2页 / 共22页
Visual C# 2010程序设计教程 教学课件 ppt 作者 978-7-302-28609-7 ch05_第3页
第3页 / 共22页
Visual C# 2010程序设计教程 教学课件 ppt 作者 978-7-302-28609-7 ch05_第4页
第4页 / 共22页
Visual C# 2010程序设计教程 教学课件 ppt 作者 978-7-302-28609-7 ch05_第5页
第5页 / 共22页
点击查看更多>>
资源描述

《Visual C# 2010程序设计教程 教学课件 ppt 作者 978-7-302-28609-7 ch05》由会员分享,可在线阅读,更多相关《Visual C# 2010程序设计教程 教学课件 ppt 作者 978-7-302-28609-7 ch05(22页珍藏版)》请在金锄头文库上搜索。

1、第5章 C#面向对象程序设计基础 本章要点: 面向对象程序设计的理念 类的概念 类与对象 类的构造函数,5.1 面向对象程序设计概念,面向对象的编程设计(OOP:Object-Oriented Programming)是一种基于结构分析的、以数据为中心的程序设计方法。它的主要思想是将数据及处理这些数据的操作都封装(Encapsulation)到一个称为类(Class)的数据结构中,使用这个类时,只需要定义一个类的变量即可,这个变量叫做对象(Object)。通过调用对象的数据成员完成对类的使用。在这种方法下,编程人员不需要编写“如何做”,而只需完成“做什么”即可。这类编程思想较好的适应了现实世界

2、中的问题,因而得以广泛应用。,5.2 类与对象,5.2.1 类与对象概述 在面向对象的程序设计方法中,类是对自然现象或实体的程序语言描述,类是虚拟的,是用来刻划显示世界中事物的一组概念。 对象是对类的实例化 ,是现实存在的并且可唯一区分的,5.2 类与对象,5.2.2 面向对象程序设计相关概念 1. 属性与方法 属性说明了这个类的特性,方法是对属性的操作。例如“笔”这个类的属性可能是笔的长度、颜色等等,而“笔”还可能有一种方法是“写”,它对属性进行操作,例如“写”导致笔的长度减短。 2. 消息 消息是对象之间发出的行为请求。封装使对象成为一个相对独立的实体,而消息机制为他们提供了一个相互间动态

3、联系的途径,使他们的行为能够互相配合,构成一个有机的运行系统。 对象通过对外提供的行为在系统中发挥自己的作用,当系统中的其他对象请求某个对象执行某个行为时,就像这个对象发送一个相应的消息。面向对象的消息处理机制使得这个对象能够响应该请求,完成指定的行为。,5.2 类与对象,5.2.2 面向对象程序设计相关概念 3. 继承 继承是指面向对象中一个类自动拥有另一个类的全部属性和方法。继承机制使得软件模块具有独立性和可重用性,从而缩短了软件开发周期并提高了软件开发效率,又使得软件易于扩充与维护。继承机制继承是面向对象方法的关键技术,它使得设计软件的过程与人类认识客观世界的过程与方法吻合,从而使人们能

4、够用和认识客观世界一致的方法来设计软件。 4. 多态 在面向对象技术中,多态性是指相同的对象收到相同的消息时,或不同的对象收到相同的消息时,产生不同的行为方式。多态性分静态多态(编译时多态)与动态面多态性(运行时多态),前者一般由函数重载产生,后者则一般通过虚函数实现。向对象技术中的多态性反映了客观世界的多态性,5.2 类与对象,5.2.3 类的声明与System.object类 C#中类的声明格式为: 类修饰符 class 类名:基类类名 类的成员; ; 其中类还可以嵌套定义,即在一个类的内部定义另一个类,语法与定义一个简单类类似。,5.2 类与对象,5.2.3 类的声明与System.ob

5、ject类 类的修饰符: new:仅允许在嵌套类声明时使用,表明类中隐藏了由基类中继承而来的,与基类中同名的成员。 public:一般使用在嵌套类的声明中,表示不限制对内层类的访问。 protected:仅允许在嵌套类声明时使用,表示可以在外层类或外层类的子类中使用。如上例中类ClassB即被认为是外层类ClassA的一部分,在ClassA的外部使用ClassB时即受到一定的限制。 internal:定得是只有在同一个程序集中才可以访问。 private:仅允许在嵌套类声明时使用,被private关键字修饰的内层类只能在外层类范围内使用,如上例中ClassB,如果定义其访问修饰符为privat

6、e,则,只能在ClassA中使用类ClassB。,5.2 类与对象,5.2.3 类的声明与System.object类 类的修饰符: abstract:抽象类,说明该类是一个不完整的类,只有声明而没有具体的实现。一般只能用来做其他类的基类,而不能单独使用。 sealed:密封类,说明该类不能作其他类的基类,不能再派生新的类。 以上类修饰符可以两个或多个组合起来使用,但需要注意下面几点: 在一个类声明中,同一类修饰符不能多次出现,否则会出错。 new类修饰符仅允许在嵌套类中表示类声明时使用,表明类中隐藏了由基类中继承而来的、与基类中同名的成员。 如果省略类修饰符,则默认为私有修饰符private

7、。,5.2 类与对象,5.2.3 类的声明与System.object类 在设置public、protected、internal和private这些类修饰符时,要注意这些类修饰符不仅表示所定义类的访问特性,而且还表明类中成员声明时的访问特性,并且它们的可用性也会对派生类造成影响。 在设置public、protected、internal和private这些类修饰符时需要注意,一般用在嵌套类的内层类中,这时内层类就被看作是外层类的一部分,这些修饰符的意义也就等同于其修饰一般类成员时的情形。 抽象类修饰符abstract和密封类修饰符sealed都是受限类修饰符,抽象类修饰符只能作其他类的基类,

8、不能直接使用,密封类修饰符不能作其他类的基类,可以由其他类继承而来但不能再派生其他类。一个类不能同时既使用抽象类修饰符又使用密封类修饰符。,5.2 类与对象,5.2.3 类的声明与System.object类 System.Object类 C#中所有的类都直接或间接继承自System.Object类,这使得C#中的类得以单根继承。如果一个类没有明确指定继承类,编译器缺省认为该类继承自System.Object类。System.Object类也可用小写的object关键字表示,两者完全等同,5.2 类与对象,5.2.4 类的声明与对象的实例化 在C#中,对象的声明很简单,其定义格式为: 类名 对

9、象名; 对象声明后并不包含任何有效内容,要想使用它,还需要进行实例化,要实例化一个对象一般采用new类修饰符。如: ClassA a; /类的定义 a=new ClassA(); /创建一个实例,并用a去引用,5.2 类与对象,5.2.5 类成员 类的具体成员有以下类型: 常量:代表与类相关的常量值; 变量:类中的成员变量。 方法:完成类中所涉及到的各种功能。 属性:用来封装类的域。利用属性完成对类的域的读写操作 事件:由类产生的通知,用于说明发生了什么事情。 索引指示器:允许编程人员在访问数组时,通过索引指示器访问类的多个实例,又称下标指示器。 运算符:定义类对象能使用的操作符。 类型:属于

10、类的局部类型。 构造函数:在类被实例化的同时被执行的成员函数,主要是完成对象初始化操作。 析构函数:在类被删除之前最后执行的成员函数,主要是完成对象结束时的收尾操作。,5.2 类与对象,5.2.5 类成员 用户完全可以根据具体需要定义类的成员,但定义时需要注意以下几个原则: 由于构造函数规定为和类名相同,析构函数名规定为类名前加一个“”波浪线符号,所以其他成员名就不能命名为和类同名或是类名前加波浪线。 类中的常量、变量、属性、事件或类型不能与其他类成员同名。 类中的方法名,不能和类中其他成员同名,既包括其他非方法成员,又包括其他方法成员。 如果没有显式指定类成员访问修饰符,默认类型为私有类型修

11、饰符。,5.2 类与对象,5.2.5 类成员 类的静态成员 声明一个静态成员只需要在声明成员的指令前加上static保留字。如果没有这个保留字就默认为非静态成员。二者的区别是:静态成员属于类所有,非静态成员则属于类的对象所有,访问时静态成员只能由类来访问,而非静态成员只能由对象进行访问。静态成员有如下特征: 当一个静态成员在形式E.M 的成员访问中被引用时,E必须表示一个类型。E表示一个实例是错误的。 一个静态域确定一个存储位置。不管类中有多少实例被创建,只会有一个静态域的备份。 一个静态功能成员(方法、属性、索引、操作符或构造函数)不会在一个指定的实例中操作,而且在一个静态功能成员中使用th

12、is也是错误的。,5.2 类与对象,5.2.6 类成员访问限制 类的每个成员都需要设定访问修饰符,不同的修饰符会造成对成员访问能力不同。C#支持四种类型的访问限制符 : 公有类型访问限制符(public):C#中的公有成员提供了类的外部界面,允许类的使用者从外部进行访问公有成员。这是限制最少的一种访问方式。 私有类型访问限制符(private) :C#中的私有成员仅限于类中的成员可以访问,从类的外部访问私有成员是不合法的。注意,如果在声明中没有出现成员的访问修饰符按照默认方式成员就为私有的。,5.2 类与对象,5.2.6 类成员访问限制 保护类型访问限制符(protected :有时为了方便派

13、生类的访问,希望成员对于外界是隐藏的,这时可以使用protected修饰符声明成员为保护成员。它不允许外界对成员访问,但是允许其派生类对成员进行访问。 内部类型访问限制符(internal):使用internal 修饰符的类的成员是一种特殊的成员,这种成员在同一个应用程序内是透明的、可访问的,而对于其它应用程序集是禁止访问的。,5.2 类与对象,5.2.7 this关键字 关键字this仅限于在构造函数、类的方法和类的实例中使用,它的含义为: 在类的构造函数中出现的this,作为一个值类型,表示对正在构造的对象本身的引用。 在类的方法中出现的this,作为一个值类型,表示对调用该方法的对象的引

14、用。 在结构的构造函数中出现的this,作为一个变量类型,表示对正在构造的结构的引用。 在结构的方法中出现的this,作为一个变量类型,表示对调用该方法的结构的引用。,5.3 类的构造函数与析构函数,5.3.1 构造函数 构造函数主要用于为对象分配存储空间,并对数据成员进行初始化。构造函数具有如下特点: 构造函数的名字必须与类同名; 构造函数没有返回类型,它可以带参数,也可以不带参数; 构造函数的主要作用是完成对类的初始化工作; 在创建一个类的新对象(使用new关键字)时,编译系统回自动调用给类的构造函数初始化新对象;,5.3 类的构造函数与析构函数,5.3.1 构造函数 实例构造函数 负责初

15、始化类中的实例变量,它只有在用户用new关键字为对象分配内存时才被调用,而且作为引用类型的类,其实例化后的对象必然时分配在托管堆(Managed Heap)上。实例构造函数又分为默认构造函数和非默认构造函数,需要指出的是一旦类有了自己的构造函数,无论是有参数还是没有参数,默认构造函数都将无效,且如果仅仅声明一个类而不实例化类对象,则不会调用构造函数。 程序设计中通常需要重载构造函数,完成对象不同的初始化要求。,5.3 类的构造函数与析构函数,5.3.1 构造函数 静态构造函数 静态构造函数是C#的一个新特性,一般在初始化一些静态变量的时候需要用到它。这个构造函数是属于类的,而不是属于类的实例的

16、,就是说这个构造函数只会被执行一次。也就是在创建第一个实例或引用任何静态成员之前,由编译系统自动调用。 在使用静态构造函数的时候应该注意几点: 静态构造函数既没有访问修饰符,也没有参数。因为是编译系统调用的,所以像public和private等修饰符就没有意义了。 在创建第一个类实例或任何静态成员被引用时,编译系统将自动调用静态构造函数来初始化类,也就是说我们无法直接调用静态构造函数,也就无法控制什么时候执行静态构造函数了。,5.3 类的构造函数与析构函数,5.3.1 构造函数 一个类只能有一个静态构造函数。 无参数的构造函数可以与静态构造函数共存。尽管参数列表相同,但一个属于类,一个属于类实例,所以不会冲突。 静态构造函数最多只运行一次。 静态构造函数不可以被继承。 如果没有写静态构造函数,而类中包含带有初始值设定的静态成员,那么编译器会自动生成默认的静态构造函数。 一个类可以同时拥有实例构造函数和静态构造函数,这是惟一可以具有相同参数列表的同名方法共存的情况。,5.3 类的构造函数与析构函数,5.3.2 析构函数

展开阅读全文
相关资源
相关搜索

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

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