《C#面向对象基础》PPT课件.ppt_第1页
《C#面向对象基础》PPT课件.ppt_第2页
《C#面向对象基础》PPT课件.ppt_第3页
《C#面向对象基础》PPT课件.ppt_第4页
《C#面向对象基础》PPT课件.ppt_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第3章 C#面向对象基础,面向对象编程的英文简称是OOP(Object Oriented Programming),该项技术是目前运用最广泛的程序化设计方法,几乎已经完全取代了过去的面向过程编程。C#从一诞生开始,就是为面向对象编程所准备的。类是面向对象编程的核心部件,它描述了一组具有相同特性和行为的对象。基于面向对象的应用程序,就是由几个或几十个甚至更多的类组成,且类之间总是保持着或多或少的关系,3.1 类的基本概念,在C#中,类可以看成是一种数据结构,它自身封装了数据成员和函数成员等。其中数据成员包括字段、常量和域等,而函数成员主要包括方法、属性、事件、索引器和操作符等。本节将对类的结构和

2、用法进行详细说明,3.1.1 C#中的类定义,在C#中,用class关键字来定义类,基本结构如下所示,3.1.2 字段,字段实际上相当于类的变量,它在类中的应用十分广泛,看一个简单的例子,如下面代码所示,3.1.3 常量,常量在类中所处的地位和字段差不多,只是它不可变而已。通常,定义常量用关键字const,如下面代码所示。 public const int age = 25,3.1.4 域,域的声名过程和字段比较相似,但它们之间有一个很重要的区别,即域只能声明在类的内部,而不能声名在类的方法的内部。域分为实例域和静态域,实例域只能通过类的实例进行调用,而静态域可以直接通过类名进行调用,3.1.

3、5 类的方法,在C#中,方法的定义与其他语言一样,包括三个部分,分别为访问修饰符、输入参数和返回类型。方法的访问修饰符的类型和类的差不多,如下表所示,3.1.6 类的属性,类的属性提供比较灵活的机制来读取、编写或计算私有字段的值,可以像使用公有数据成员一样使用属性。属性必须要由访问器进行读写,它的一般声明格式如下所示,3.1.7 类的索引器,索引器是C#所特有的类成员,它的主要作用是对象能向数组一样被方便地引用。索引器的声明与属性的声明比较类似,如下所示,3.1.7 类的索引器,索引器具有以下特点。 (1)索引器没有具体的名字,需要用this关键字对对象进行索引。this关键字指向被访问成员所

4、在的当前实例,可以在构造函数和实例方法中实现对成员的访问,但不能访问静态成员。 (2)索引器不能定义为静态的。 (3)索引器的参数index只能是传值类型,不能出现ref和out关键字,3.1.8 类的构造函数和析构函数,类的构造函数能被编译器自动执行,它具有以下特点。 (1)构造函数必须与类同名。 (2)构造函数不能有返回类型。 (3)当访问一个类时,它的构造函数最先被执行。 (4)一个类可以有多个构造函数,如果没有定义构造函数,系统会自动生成一个默认的构造函数,3.1.9 事件,事件相关知识的内容太多,在本章的后面部分将用单独一节进行讲解,3.2 Visual Studio中的类向导,在V

5、S2010中,提供了创建类和类的成员的快捷方式,在本节中将通过例子进行详细说明。 图 程序运行结果,3.3 事件和委托,事件是C#中的又一个重要概念,它的定义如下所示。在发生其他类或对象需要关注的事情时,本类或对象可以通过事件来通知它们。发送事件的类称为事件的发送者,而接收事件的类称为事件的订阅户,3.3.1 委托,委托是事件应用过程中必不可少的一个环节,委托首先是在Visual J+中提出的,后来被C#引用。如果一个类需要调用另一个类的方法,可以有三种方式,即实例方式、静态方式和委托方式。应用委托调用方法的流程如图所示。 图 委托使用流程图,3.3.2 委托的事件处理程序,前面提到,事件需要

6、订阅者,当事件发生时,订阅者会给出相应的事件处理程序。事件处理程序本身是简单的函数形式,它的参数和返回类型必须和调用它的委托相匹配。委托在这里的作用是包含事件处理程序,当事件被触发时,通过委托来执行事件处理程序,3.3.3 委托中的GUI事件,总的来说,事件具有以下特点。 (1)事件的发送者决定何时发送事件,事件的订阅者决定执行何种操作来响应事件。 (2)一个事件可以同时有多个订阅者,一个订阅者可以响应多个事件。 (3)没有订阅者的事件不会被调用。 (4)具有多个订阅者的事件被触发时,会同步调用多个事件处理程序。 (5)在.NET Framework中,事件是基于EventHandler委托和

7、EventArgs基类的,3.4 面向对象的特征,面向对象主要具有三大特征,即继承、多态和封装。正因为这些机制的存在,才使得应用程序变得更为简单和丰富多彩。本节将对以上三个特征进行详细介绍,此外还会提到面向对象中另一个重要知识点重载,3.4.1 继承,继承是指一个类A能利用另一个类B的资源(包括属性和方法等),其中B类被称为基类(或父类),而A类被称为派生类(或子类)。继承的使用语法如下所示。 (1)大多数而并非所有类都可以作为基类被继承,比如带有sealed修饰符的密封类不能被继承。 (2)基类中只有两种成员能被派生类访问,包括public和protected类型的成员。其中,protect

8、ed类型是专为派生类设计的,该类型的成员只能在派生类中进行访问。 (3)在派生类中可以修改基类中的以下成员,包括虚拟成员(virtual)和抽象成员(abstract)。其中对虚拟成员的修改是在派生类中重写该成员的执行代码;而对于抽象成员而言,它在基类中,没有执行代码,需要在派生类中进行添加,3.4.2 多态,多态是面向对象的又一个重要特征,它主要是指同一操作(如方法)作用于不同的类的实例,将产生不同的结果。多态主要是通过在派生类中对基类中的成员进行替换或重定义完成,3.4.3 封装,封装是指将对象的信息进行隐藏,而只是提供一个访问接口,使它的使用者无法看到对象的具体信息。在类中,通过不同的修

9、饰符能让类的成员实现公开或隐藏。通过这些修饰符,类实现了很好的封装,3.4.4 重载,重载是面向对象中除三大特征外的又一个重要知识点,它是指在类中同名成员的不同定义。它的主要作用是使程序逻辑更加清晰。重载主要包括方法重载和运算符重载,本节将通过例子对这两者进行详细介绍,3.4.5 方法重载,方法重载是C#中运用最广泛的一种重载方式,它是指在类中建立名称相同但参数不同的方法。方法重载主要是为了解决操作同一类对象需要使用不同方法的问题,如计算一类图形的面积。图形中包括矩形、圆和椭圆,它们的面积计算公式是不同的,这里就需要用到重载的概念,3.4.6 运算符重载,运算符重载主要是为了在类中扩展运算符的

10、功能,以完成一些特殊的操作。重载运算符需要用到operator关键字。 在运算符重载的使用过程中,应注意以下情况。 (1)并非所有运算符都能被重载,不能被重载的运算符包括“=”、“?:”、“-”、“new”、“is”、“sizeof”和“typeof”。 (2)重载运算符不能改变原来运算符的优先级和操作数。 (3)比较运算符必须成对重载,如“=”和“!=”,“”和“”等。 (4)重载运算符可由派生类继承,3.5 接口,接口是面向对象中的又一个重要概念,它用于定义类或结构的行为特征。接口包含事件、方法、属性和索引器4种成员,它只包含这些成员的签名而不包含实现,这一点和抽象类比较相似;而且接口不能

11、包含字段,且它的所有成员都必须是公开的,3.5.1 接口的声明,接口的声明需要采用interface关键字,如下所示,3.5.2 接口的使用,前面提到,接口只能包含成员的签名,不能包含成员的实现。接口成员必须要在继承该接口中的类中才能实现。 上面代码中,实现了接口MyInterface中的MyMethod()方法并完成输出。在使用接口时,应注意以下问题。 (1)接口自身不能被实例化,需要在继承它的类中才能使用。 (2)接口不能包含字段。 (3)接口不能包含静态成员。 (4)接口成员默认是public类型的,不能在接口成员前面加任何修饰符。 (5)类和结构可以从多个接口继承。 (6)接口本身也可

12、以从其他接口继承,它的继承机制和类的继承机制一样,3.6 面向对象的其他主题,本章前面部分以类为重点介绍了面向对象的相关知识,但仅有类是不够的,面向对象还有一些其他主题,比如命名空间等。在本节中,将对面向对象中其他一些主题进行介绍,以帮助读者更好地理解面向对象的本质,3.6.1 命名空间,在.NET Framework中,一个命名空间就是一个逻辑的命名系统,它用于指定一个范围,并在该范围组织代码(包括类、接口、结构体和枚举等)。命名空间在前面的代码中已经多次用到,如果需要使用包含在命名空间中的类,则需要使用using指令包含该命名空间,如下所示,3.6.2 程序集,程序集是.NET Frame

13、work应用程序的基本构造块,当生成C#应用程序时,VS会在当前工程的Debug目录下生成可移植可执行的文件,通常是.exe或.dll文件。在较大的项目中,程序集的作用是十分明显的。项目经理可以把项目划分成几个单独的模块,由不同的人员进行开发,然各自生成程序集,最后通过一定的方式将这些程序集组合起来即可。 程序集具有以下特点。 (1)程序集以.exe或.dll格式的文件存在。 (2)能在多个应用程序之间实现程序集的共享。 (3)在单个应用程序中可以使用程序集的两个版本,3.6.3 类库,在.NET Framework中,类库是由命名空间组成,同时又是类、接口和值类型组成的库,这些库能对系统功能进行访问,是建立.NET Framework应用程序、组件和控件的基础。.NET Framework中包含了大量的系统类库供用户使用,调用这些类库时,系统会自动添加,只需用using指令包含类库提供的命名空间即可,比如前面经常使用的System命名空间。 但系统提供的类库有时候并不能完全满足用户的要求,此时就需要自定义类库。下面通过例子说明类库的编写和调用,3.7 小结,本章主要介绍了面向对象技术的基本内容。首先是类的相关知识的介绍,类是面向对象技术中最基础也是最重要的内容,本章分别从类的定义、类的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论