第7章类与对象.ppt

上传人:可****阿 文档编号:75316939 上传时间:2023-03-03 格式:PPT 页数:32 大小:282KB
返回 下载 相关 举报
第7章类与对象.ppt_第1页
第1页 / 共32页
第7章类与对象.ppt_第2页
第2页 / 共32页
点击查看更多>>
资源描述

《第7章类与对象.ppt》由会员分享,可在线阅读,更多相关《第7章类与对象.ppt(32页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第7章 类 与 对 象 本章将首先介绍面向对象编程的基本概念,继而介绍本章将首先介绍面向对象编程的基本概念,继而介绍面向对象的基本内容,包括类与对象。本章将着重介绍类面向对象的基本内容,包括类与对象。本章将着重介绍类与对象的概念、类内部的数据成员与函数成员以及这些成与对象的概念、类内部的数据成员与函数成员以及这些成员的访问方式。最后介绍静态类、静态成员、部分类和命员的访问方式。最后介绍静态类、静态成员、部分类和命名空间等。名空间等。章节内容章节内容7.1 面向对象编程的基本知识面向对象编程的基本知识7.2 类与对象类与对象 7.3 类的成员类的成员 7.4 部分类部分类 7.5 类与命名空间类

2、与命名空间 7.6 小结小结 7.1.1 面向对象编程的历史1967年年5月月20日,日,挪威奥斯陆计算机中心挪威奥斯陆计算机中心的的Ole-Johan Dahl和和Kristen Nygaad为了解决模拟问题,设计了第一个为了解决模拟问题,设计了第一个面向对象的程序设计语言面向对象的程序设计语言Simula,此时就有了类和实例化,此时就有了类和实例化的概念。的概念。70年代,年代,PARC研究所推出了研究所推出了Smalltalk语言,引入了动态语言,引入了动态对象和继承性思想。对象和继承性思想。Smalltalk语言被认为是第一个真正的语言被认为是第一个真正的面向对象程序语言。面向对象程序

3、语言。到到80年代中后期,面向对象的程序设计日益成熟,并被整年代中后期,面向对象的程序设计日益成熟,并被整个计算机界接受和追逐,面向对象的开发问题便出现了。个计算机界接受和追逐,面向对象的开发问题便出现了。90年代,年代,Microsoft Visual系列面向对象的程序设计软件逐系列面向对象的程序设计软件逐渐流行,面向对象的编程已经成为无可取代的潮流,并在渐流行,面向对象的编程已经成为无可取代的潮流,并在无数人的努力下,逐渐走向成熟。无数人的努力下,逐渐走向成熟。7.1.2 面向对象编程的概念 面向对象编程的对象,即系统中用于描述客观事物面向对象编程的对象,即系统中用于描述客观事物的一个实体

4、,是构成系统的一个基本单位。的一个实体,是构成系统的一个基本单位。面向对象编程中的类,是具有相同数据成员和函数面向对象编程中的类,是具有相同数据成员和函数成员的一组对象的集合,它为属于该类的全部对象成员的一组对象的集合,它为属于该类的全部对象提供了抽象的描述。提供了抽象的描述。面向对象编程的基本内容就是把数据和函数面向对象编程的基本内容就是把数据和函数“封装封装”到编程所必需的到编程所必需的“对象对象”中,程序由一个个能够中,程序由一个个能够起到子程序作用的对象(或单元)组合而成起到子程序作用的对象(或单元)组合而成 7.1.3 面向对象编程的基本特点 1封装。面向对象技术中的封装,简单来说就

5、是封装。面向对象技术中的封装,简单来说就是将代码及其处理的数据绑定在一起,形成一个独将代码及其处理的数据绑定在一起,形成一个独立单位,对外实现完整功能,并尽可能隐藏对象立单位,对外实现完整功能,并尽可能隐藏对象的内部细节的内部细节。2继承。继承(继承。继承(Inheritance)也称作派生,指)也称作派生,指的是特殊类的对象自动拥有一般类的全部数据成的是特殊类的对象自动拥有一般类的全部数据成员与函数成员(构造函数和析构函数除外)。员与函数成员(构造函数和析构函数除外)。3多态。多态性(多态。多态性(Polymorphism)是指一般类)是指一般类中定义的属性或行为,被特殊类继承之后,可以中定

6、义的属性或行为,被特殊类继承之后,可以具有不同的数据类型或表现出不同的行为。具有不同的数据类型或表现出不同的行为。7.2 类与对象角色名:性别:出处:地位:门派地位:爱侣:父亲:母亲:张无忌男倚天屠龙记主角明教教主赵敏张翠山殷素素类对象7.2.1 类的定义1.1.语法:语法:class-modifiers class identifier:class-base class-body;2.2.注意:注意:l工程是任何工程是任何.NET Framework应用程序的基本构造块,可以简单理解应用程序的基本构造块,可以简单理解 为一个为一个EXE或或DLL。l类的默认修饰符为类的默认修饰符为inter

7、nal。l一个类只能有一个访问修饰符,使用一个类只能有一个访问修饰符,使用protected internal组合时除外。组合时除外。l子类的可访问性不能高于父类。子类的可访问性不能高于父类。7.2.1 类的定义修饰符含义特点public公共对该类的访问不限制private私有访问仅限于类本身protected受保护访问仅限于类本身或从包含类派生的类型internal内部访问仅限于当前工程,类的默认修饰符abstract抽象该类不能生成实例sealed密封该类不允许被继承new只嵌套用表明类中隐藏了由基类中继承来的,与基类中同名的类型7.2.2 对象语法:Role ZhangWuji=new

8、Role();张无忌男倚天屠龙记主角明教教主赵敏张翠山殷素素7.3 类的成员类类的的成成员员主主要要有有数数据据成成员员和和函函数数成成员员,也也可可以以嵌嵌套套其其他他类类型型(如如其其他他类类、结结构构、枚枚举举等)等)。7.3.1 成员访问属性修饰符含义特点public公有成员任何代码均可以访问该成员private私有成员仅限类内部的成员才能访问该成员,是默认访问属性protected保护成员所在类和所在类的派生类可以访问internal内部成员程序集内部可以访问using System;class Vehicle/定义汽车类定义汽车类 public int wheels;/公有成员:轮

9、子个数公有成员:轮子个数 protected float weight;/保护成员:重量保护成员:重量 public void F()wheels=4;/正确,允许访问自身成员正确,允许访问自身成员 weight=10;/正确,允许访问自身成员正确,允许访问自身成员 7.3.1 成员访问属性class train/定义火车类定义火车类 public int num;/公有成员:车厢数目公有成员:车厢数目 private int passengers;/私有成员:乘客数私有成员:乘客数 private float weight;/私有成员:重量私有成员:重量 public void F()num

10、=5;/正确,允许访问自身成员正确,允许访问自身成员 weight=100;/正确,允许访问自身成员正确,允许访问自身成员 Vehicle v1=new Vehicle();V1.wheels=4;/正确,允许访问正确,允许访问v1的公有成员的公有成员 /v1.weight=6;/错误,不允许访问错误,不允许访问v1的保护成员的保护成员 7.3.1 成员访问属性类的数据成员包含字段、常量和事件。类的数据成员包含字段、常量和事件。1字段。字段用于表示与对象或类相关联的变量,包括字段。字段用于表示与对象或类相关联的变量,包括静态字段、实例字段和只读字段。静态字段、实例字段和只读字段。见下例。见下例

11、。2常量。常量与类的关联方式和变量与类的关联方式相常量。常量与类的关联方式和变量与类的关联方式相同。使用同。使用const关键字声明常量,如果它们声明为关键字声明常量,如果它们声明为public,就可以在类的外部访问。见下例。,就可以在类的外部访问。见下例。3事件。事件是类的成员,在类或对象发生某些行为事件。事件是类的成员,在类或对象发生某些行为(例如用户的交互操作或者改变了类的某些字段或属性)(例如用户的交互操作或者改变了类的某些字段或属性)时,它可以让对象通知调用程序。客户端可以包含所谓时,它可以让对象通知调用程序。客户端可以包含所谓“事件处理程序事件处理程序”的代码来响应该事件。有关事件

12、的详细介的代码来响应该事件。有关事件的详细介绍可参见第绍可参见第9章。章。7.3.2 数据成员class Goods public double height;/实例字段实例字段 public readonly double width=30;/只读字段在声明时赋值只读字段在声明时赋值 public static int count=0;/静态字段,静态字段,public Goods(double h,double w)height=h;width=w;/只读字段在构造函数中赋值只读字段在构造函数中赋值 count+;static void Main(string args)Goods y=n

13、ew Goods(100,200);Console.WriteLine(height=0,width=1,count=2,y.height,y.width,Goods.count);Goods z=new Goods(300,400);Console.WriteLine(height=0,width=1,count=2,z.height,z.width,Goods.count);/z.width=700;则编译错误。只读字段不能在这里赋值则编译错误。只读字段不能在这里赋值 7.3.2 数据成员字段例子class Vehicle /定义汽车类定义汽车类 public const string c

14、ountry=China;/共有常量成共有常量成员员 public int wheels;/公有成员:轮子个数公有成员:轮子个数 protected float weight;/保护成员:重量保护成员:重量7.3.2 数据成员常量例子7.3.3 函数成员类的函数成员包括方法、属性、运算符、索引器、类的函数成员包括方法、属性、运算符、索引器、构造函数和析构函数。构造函数和析构函数。1方法。方法是表现类或对象行为的成员函数。方法。方法是表现类或对象行为的成员函数。2属性。属性用于描述对象的特征或表示对象的属性。属性用于描述对象的特征或表示对象的 状态,提供对类或对象性质的访问。状态,提供对类或对象

15、性质的访问。3运算符。运算符执行的最简单的操作,即运算符。运算符执行的最简单的操作,即+和和-4索引器。索引器允许对象以数组或集合的方式索引器。索引器允许对象以数组或集合的方式进行索引。进行索引。5构造函数和析构函数构造函数和析构函数class TestMethod int square(int x)return x*x;double square(double x)return x*x;decimal square(decimal x)return x*x;static void Main()TestMethod t=new TestMethod();Console.WriteLine(Th

16、e square id 0,1,2,t.square(10),t.square(12.34),t.square(123.456m);7.3.3 函数成员方法例子class Window private double width=30;public double Width get return width;set width=value;static void Main(string args)Window y=new Window();y.Width=200;Console.WriteLine(The width of window is 0,y.Width);7.3.3 函数成员属性例子7

17、.3.4 构造函数和析构函数1构造函数构造函数构造函数是特殊的成员函数,主要用于为对象分配构造函数是特殊的成员函数,主要用于为对象分配空间,完成初始化工作。空间,完成初始化工作。构造函数的名称必须与类名相同。构造函数的名称必须与类名相同。构造函数可以带参数,但没有返回值。构造函数可以带参数,但没有返回值。构造函数在对象定义时被自动调用。构造函数在对象定义时被自动调用。若没有为类定义构造函数,则系统会生成默认的构若没有为类定义构造函数,则系统会生成默认的构造函数。造函数。构造函数可以被重载,但不可以被继承。构造函数可以被重载,但不可以被继承。7.3.4 构造函数和析构函数类型默认值sbyte、b

18、yte、short、ushort、int、uint、long、ulong0charx0000float0.0fdouble0.0ddecimal0.0mboolfalse枚举类型0结构类型把所有成员为类型的默认值引用类型空引用null7.3.4 构造函数和析构函数class Car private string description;private uint wheels;public Car(string description,uint wheels)this.description=description;this.wheels=wheels;public Car(string des

19、cription)this.description=description;this.wheels=4;7.3.4 构造函数和析构函数2析构函数析构函数析构函数也是特殊的成员函数,主要用于释放类实析构函数也是特殊的成员函数,主要用于释放类实例,它的特殊性表现如下。例,它的特殊性表现如下。析构函数的名称与类名相同,但前面加一个析构函数的名称与类名相同,但前面加一个“”符号。符号。析构函数不能带参数,也没有返回值。析构函数不能带参数,也没有返回值。当撤销对象时,自动调用析构函数,在代码中不能当撤销对象时,自动调用析构函数,在代码中不能调用析构函数。调用析构函数。析构函数不能被继承,也不能被重载。析

20、构函数不能被继承,也不能被重载。7.3.4 构造函数和析构函数class MyClass MyClass()/代码代码 7.4 静态类和静态成员静静态态类类无无需需创创建建实实例例就就能能够够访访问问数数据据和和函函数数,当当类类中中没没有有依依赖赖对对象象标标识识的的数数据据或或行行为为时时,就就可可以以使使用用静静态态类类。静静态态类类在在加加载载包包含含该该类类的的程程序序或或命命名名空空间间时时,由由.NET Framework公公共共语语言运行库(言运行库(CLR)自动加载。)自动加载。7.4 静态类和静态成员静态类需要注意如下事项:静态类需要注意如下事项:静态类是不能实例化的类,因

21、而静态类类型的变量也就不能使用静态类是不能实例化的类,因而静态类类型的变量也就不能使用 new 关键字创建。关键字创建。静态类不能被继承。静态类不能被继承。静态类默认继承自静态类默认继承自System.Object根类,不能显式指定任何其他基类。根类,不能显式指定任何其他基类。静态类不能有实例构造函数,系统也不会为其提供默认构造函数,但静态类不能有实例构造函数,系统也不会为其提供默认构造函数,但可以包含静态构造函数。可以包含静态构造函数。静态类不能有任何实例成员,但可以有常量成员。静态类不能有任何实例成员,但可以有常量成员。静态类不能实现任何接口,有关接口的介绍可参见第静态类不能实现任何接口,

22、有关接口的介绍可参见第8章。章。静态类的成员不能有静态类的成员不能有protected或或protected internal访问修饰符。访问修饰符。静态类的成员默认并不是静态类的成员默认并不是static类型的,必须用类型的,必须用static修饰符显式声修饰符显式声明成员。明成员。7.4 静态类和静态成员在在类类中中,声声明明为为static的的成成员员就就是是静静态态成成员员,不不需需static修修饰饰的的成成员员默默认认情情况况下下为为实实例例成成员员。静静态态成成员员通通常常用用于于表表示示不不随随对对象象状状态态而而变变化化的的数数据据或或计计算算。但但是是,一一个个类类成成员员

23、是是否否为为静静态态成成员,与类本身是否静态无关。员,与类本身是否静态无关。class Student int SNO;static int count;public Student(int s)SNO=s;count+;public void display()Console.WriteLine(count=0,SNO=1,count,SNO);7.4 静态类和静态成员class TestStudent public static void Main()Student s1=new Student(12);s1.display();Student s2=new Student(20);s2.

24、display();7.4 静态类和静态成员7.5 部分类使用部分类定义就是把类的定义放在多个文件中,使用部分类定义就是把类的定义放在多个文件中,使用使用partial关键字,允许把字段、属性、方法和关键字,允许把字段、属性、方法和构造函数等分开存放。构造函数等分开存放。语法形式:语法形式:public partial class MyClass 7.6 类与命名空间命命名名空空间间是是一一种种逻逻辑辑上上的的概概念念,表表示示范范围围,用用于于把相关的类或其他的类型组织起来。把相关的类或其他的类型组织起来。namespace TIANLONGpublic class Role/角色类角色类

25、/代码代码 sealed class Scenario/情节类情节类/代码代码 7.7 小结类类的的成成员员主主要要有有数数据据成成员员和和函函数数成成员员,也也可可以以嵌嵌套套其其他他类类型型(如如其其他他类类、结结构构、枚枚举举等等)。其其中中,类类的的数数据据成成员员包包括括字字段段、常常量量和和事事件件,类类的的函函数数成成员员包包括括方方法法、属属性性、运运算算符符、索索引引器器、构构造造函函数数和和析析构构函函数数。C#类类的的成成员员具具有有不不同同的的访访问问属属性性,包包括括public、private、protected、internal。类类的的成成员员具具有有不不同同的的性性质质,分分别别为为静静态态成成员员和和实实例例成成员员。静静态态类类里里的的成成员员一一定定是是静静态态成成员员,而而静静态态成成员员却却不不一一定定在在静静态态类类中中。部部分分类类把把类类的的定定义义分分开开存存储储在在不不同同的的物物理理文文件件中中,通通过过命命名名空空间间,在在逻逻辑辑上上把把C#复复杂杂的的代代码码有有机机地地组组织织起起来来,二二者者在在实实际际大大型型程程序序的的开开发发中中会十分有用。会十分有用。

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

当前位置:首页 > 应用文书 > 工作计划

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁