C#-程序设计教程第5章.ppt
《C#-程序设计教程第5章.ppt》由会员分享,可在线阅读,更多相关《C#-程序设计教程第5章.ppt(69页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 第五章第五章 面向对象面向对象 04 二月 2023第五章第五章 面向对象面向对象 5.1 面向对象程序设计概述 5.2 类的定义和对象的创建 5.3 类的字段和属性5.4 索引器5.5 方法定义及调用5.6 值类型与引用类型04 二月 2023第五章第五章 面向对象(续)面向对象(续)5.7 参数的传递5.8 变量的作用域5.9 构造函数5.10 静态成员5.11 内部类和匿名类04 二月 20235.1 5.1 面向对象程序设计概述面向对象程序设计概述原有简单类型已无法方便处理学生信息。原有简单类型已无法方便处理学生信息。C#程程序设计语言(包括其他所有的面向对象程序设计语言)序设计语言
2、(包括其他所有的面向对象程序设计语言)给出一种由程序开发者自行设计数据类型的技术和方给出一种由程序开发者自行设计数据类型的技术和方法,这种可以用于创建变量的法,这种可以用于创建变量的复杂的数据类型复杂的数据类型有一个有一个统一的称呼:统一的称呼:类类类类。C#语言中微软提供了大量的类以方便完成程序语言中微软提供了大量的类以方便完成程序开发。面向对象程序设计中的核心概念包括:开发。面向对象程序设计中的核心概念包括:类类和和对对象象。简单地说,。简单地说,类是一种复杂的数据类型,它是将不类是一种复杂的数据类型,它是将不同类型的数据和与这些数据相关的操作封装在一起的同类型的数据和与这些数据相关的操作
3、封装在一起的集合体。集合体。对象对象则是以类为数据类型声明或创建的则是以类为数据类型声明或创建的变量变量。为什么需要类04 二月 20235.2 5.2 类的定义和对象的创建类的定义和对象的创建1.类的定义类作为复杂的数据类型,内部可以包括:类作为复杂的数据类型,内部可以包括:属性、字段、方法以及内部类。属性、字段、方法以及内部类。类在使用前,必须先声明类在使用前,必须先声明,声明类使用,声明类使用关键字关键字class,语法格式为:,语法格式为:属性属性 访问控制符访问控制符 class 类名类名/类的属性、字段、方法、内部类类的属性、字段、方法、内部类04 二月 20235.2 5.2 类
4、的定义和对象的创建类的定义和对象的创建1.类的定义类以及类的成员(包括类的属性、字段、方法、类以及类的成员(包括类的属性、字段、方法、事件、委托以及内部类)可以通过访问控制符控事件、委托以及内部类)可以通过访问控制符控制其可访问性,此部分内容,参见后续面向对象制其可访问性,此部分内容,参见后续面向对象高级应用内容,本章全用高级应用内容,本章全用public访问控制符访问控制符,public关键字不能省略关键字不能省略。根据代码规范化的要求及。根据代码规范化的要求及行业规范,类名用能代表类意义的单词组成,每行业规范,类名用能代表类意义的单词组成,每个单词首字母大写,同时,类名还必须符合标识个单词
5、首字母大写,同时,类名还必须符合标识符的命名规则,修饰类的属性一般并不是必须的。符的命名规则,修饰类的属性一般并不是必须的。04 二月 20235.2 5.2 类的定义和对象的创建类的定义和对象的创建1.类的定义创建类时,一般一个类的声明放在一个创建类时,一般一个类的声明放在一个独立的源文件中,只有当两个类有非常密切独立的源文件中,只有当两个类有非常密切的关系时才会把多个类的声明放在同一个源的关系时才会把多个类的声明放在同一个源文件中。文件中。例:完成例:完成“学生类学生类”Student的声明并的声明并添加必要的注释。添加必要的注释。04 二月 20235.2 5.2 类的定义和对象的创建类
6、的定义和对象的创建2.对象的声明及创建设计类的目的就是为了根据需要创建一设计类的目的就是为了根据需要创建一种新的数据类型,最终将用于声明和创建对种新的数据类型,最终将用于声明和创建对应满足要求的变量,类创建的变量又称为对应满足要求的变量,类创建的变量又称为对象。象。和创建简单数据类型的变量一样,复和创建简单数据类型的变量一样,复杂数据类型的变量也需要先声明。杂数据类型的变量也需要先声明。例:声明一个例:声明一个“学生类学生类”Student类型的类型的变量(对象)。变量(对象)。04 二月 20235.2 5.2 类的定义和对象的创建类的定义和对象的创建2.对象的声明及创建声明了声明了firs
7、tStudent对象后,与简单数对象后,与简单数据类型变量不同的是,类声明的对象还必须据类型变量不同的是,类声明的对象还必须先创建,然后才能使用,因为此时先创建,然后才能使用,因为此时firstStudent对象还不存在。对象还不存在。创建对象的关键字是创建对象的关键字是new,语法格式为:,语法格式为:new 类名类名();例:创建一个例:创建一个“学生类学生类”Student类型的变类型的变量(对象)。量(对象)。04 二月 20235.3 5.3 类的字段和属性类的字段和属性在前一节已声明了用于管理学生信息的在前一节已声明了用于管理学生信息的专用类专用类Student,但是实际上还无法管
8、理学,但是实际上还无法管理学生的任何信息,为了使类能够管理需要管理生的任何信息,为了使类能够管理需要管理的信息,在类的内部常常需要定义类的成员,的信息,在类的内部常常需要定义类的成员,类的成员包括字段、属性、常量、方法、事类的成员包括字段、属性、常量、方法、事件、索引器、构造函数、析构函数以及内部件、索引器、构造函数、析构函数以及内部类等。类等。04 二月 20235.3 5.3 类的字段和属性类的字段和属性字段字段是在类范围声明的变量。字段是其包含类是在类范围声明的变量。字段是其包含类型的成员,字段可以是内置数值类型或其他类的实型的成员,字段可以是内置数值类型或其他类的实例。例如,日历类可能
9、具有一个包含当前日期的字例。例如,日历类可能具有一个包含当前日期的字段。段。字段的声明语法格式为:字段的声明语法格式为:访问控制符访问控制符 数据类型数据类型 字段名字段名字段声明在类的直接内部。字段声明在类的直接内部。例:为例:为Student类添加字段,用以保存学生姓名、类添加字段,用以保存学生姓名、学号、电话号码、生日等基本信息。学号、电话号码、生日等基本信息。1.类的字段声明04 二月 20235.3 5.3 类的字段和属性类的字段和属性字段名称必须附合标识符的相关规则,字段名称必须附合标识符的相关规则,建议同时遵循相关的代码规范化要求。建议同时遵循相关的代码规范化要求。字段声明后,类
10、创建的对象自动都具备了字段声明后,类创建的对象自动都具备了同同名的内部变量名的内部变量,但不同对象,其同名字段值,但不同对象,其同名字段值可以不一样。可以不一样。字段的数据类型如果是字段的数据类型如果是简单数据类型简单数据类型,则对象创建后,其字段值同时自动设置为对则对象创建后,其字段值同时自动设置为对应数据类型的应数据类型的默认值默认值,如字段数据类型是,如字段数据类型是复复杂数据类型杂数据类型(如类),则字段值自动设置为(如类),则字段值自动设置为null。1.类的字段声明04 二月 20235.3 5.3 类的字段和属性类的字段和属性对象创建后,可以通过对象名和对应的字段名对象创建后,可
11、以通过对象名和对应的字段名实现对相应对象的字段进行访问,以设置字段的值实现对相应对象的字段进行访问,以设置字段的值或读取字段的值。或读取字段的值。访问对象的属性时,通过访问对象的属性时,通过“.”运算符实现,运算符实现,语法格式为:语法格式为:对象名对象名.字段名字段名当其出现在赋值符号右侧时是读取对应字段值,当其出现在赋值符号右侧时是读取对应字段值,在赋值符号左侧时是把赋值符号右侧的值保存到对在赋值符号左侧时是把赋值符号右侧的值保存到对象的字段中。象的字段中。例:创建两个例:创建两个StudentStudent对象,访问各字段值。对象,访问各字段值。2.类的字段访问04 二月 20235.3
12、 5.3 类的字段和属性类的字段和属性在声明类的字段时,必须注意,只有在声明类的字段时,必须注意,只有同一类型的对象都具备的共同特征才声明为同一类型的对象都具备的共同特征才声明为类的字段。类的字段。在声明类的字段时,请注意添加字段在声明类的字段时,请注意添加字段的注释,其方法与类的注释添加方法相同,的注释,其方法与类的注释添加方法相同,字段注释添加后,在引用字段时,字段注释添加后,在引用字段时,IDE会自会自动显示对应的字段注释内容,方便编写代码,动显示对应的字段注释内容,方便编写代码,减少代码编写错误。减少代码编写错误。2.类的字段访问04 二月 20235.3 5.3 类的字段和属性类的字
13、段和属性类的字段不能很好满足程序设计的要求,同类的字段不能很好满足程序设计的要求,同时不便于程序的修改。时不便于程序的修改。C#一般把字段设计为一般把字段设计为非非public类型,提供类型,提供“属性属性”来访问字段。来访问字段。属性是这样的成员:属性是这样的成员:它们提供灵活的机制来读取、它们提供灵活的机制来读取、编写或计算私有字段的值编写或计算私有字段的值。可以像使用公共数据成。可以像使用公共数据成员一样使用属性,但实际上它们是称作员一样使用属性,但实际上它们是称作“访问器访问器”的特殊方法的特殊方法。这使得可以轻松访问数据,此外还有。这使得可以轻松访问数据,此外还有助于提高方法的安全性
14、和灵活性。助于提高方法的安全性和灵活性。3.类的属性声明04 二月 20235.3 5.3 类的字段和属性类的字段和属性属性声明的基本语法格式为:属性声明的基本语法格式为:访问控制符访问控制符 属性数据类型属性数据类型 属性名属性名 get return 字段名字段名;set 字段名字段名=value;注意,注意,set中的中的value变量名不能变。变量名不能变。其中的其中的get又称为又称为get属性访问器,属性访问器,set又称为又称为set属性访问器。属性访问器。例:修改原有例:修改原有Stuent类定义,为所有字段类定义,为所有字段添加对应属性。添加对应属性。3.类的属性声明04 二
15、月 20235.3 5.3 类的字段和属性类的字段和属性由于字段不再能直接进行访问,但程由于字段不再能直接进行访问,但程序仍需要读取和保存相关信息,此时属性的序仍需要读取和保存相关信息,此时属性的访问将替代原有字段的访问内容。访问将替代原有字段的访问内容。访问对象的属性方法和访问对象的字段方法访问对象的属性方法和访问对象的字段方法一样,通过一样,通过“.”运算符实现,语法格式为:运算符实现,语法格式为:对象名对象名.属性名属性名4.类的属性访问04 二月 20235.3 5.3 类的字段和属性类的字段和属性当对象的属性在赋值符号右侧时,是读取当对象的属性在赋值符号右侧时,是读取属性的值,即执行
16、属性中的属性的值,即执行属性中的get访问器,得到访问器,得到get访问器的返回值。访问器的返回值。当对象的属性在赋值符号左侧时,是设置当对象的属性在赋值符号左侧时,是设置属性的值,即执行属性中的属性的值,即执行属性中的set访问器,把赋值访问器,把赋值符右侧的值保存到属性对应的字段中,执行符右侧的值保存到属性对应的字段中,执行set访问器的代码时,访问器的代码时,value变量自身则已保存了赋变量自身则已保存了赋值符号右侧的值。值符号右侧的值。例:修改例:修改StudentStudent,通过属性访问学生信息,通过属性访问学生信息。4.类的属性访问属性:是类提供给外部调用时用的,可以使用 对
17、象.属性 设置或读取 一个值 getreture xxx;表示可读 setxxx=value;表示可写 字段:就是类内部用的.存储数据属性简介属性简介 3-2 3-2class Student private static string _name;private static string _id;public void SetId(value)/验证输入长度小于 2if(_id.Length 2)_id=value;public string GetId()return _id;方法 SetId(Value)和 GetId()分别读取和写入学生 ID Student s;s.SetId(A
18、1);string StudentId=s.GetId()每次都调用 GetId()和 SetId()方法会很繁琐属性属性简介属性简介 3-3 3-3class Student private static string _name;private static string _id;public string Id get return _id;set/验证输入长度小于 2if(_id.Length 2)_id=value;读取 ID 时调用 将值赋给 ID 时调用 属性类型属性类型 4-14-1 访问修饰符 数据类型 属性名 get;set;读/写属性可以赋值和检索值属性类型属性类型 4-
19、24-2访问修饰符 数据类型 属性名get;只读属性只能检索值属性类型属性类型 4 4-3 3访问修饰符 数据类型 属性名set;只写属性只能赋值class Accountprivate int _accountNo;/帐号private double _balance;/余额private double _interest;/利息private static double _interestRate;/利率/构造函数初始化类成员public Account(int No,double bal)this._accountNo=No;this._balance =bal;/只读 AccountN
20、umber 属性public int AccountNumbergetreturn _accountNo;演示定义和调用属性定义和调用属性 4-14-1 只读属性 04 二月 20235.4 5.4 索引器索引器当对象中包括多个同类型的成员时,需当对象中包括多个同类型的成员时,需要快捷方便的方式访问指定序号对应的成员,要快捷方便的方式访问指定序号对应的成员,此时可以使用索引器。索引器允许类的实例此时可以使用索引器。索引器允许类的实例就像数组一样进行索引。索引器类似于属性,就像数组一样进行索引。索引器类似于属性,不同之处在于它们的访问器采用参数。不同之处在于它们的访问器采用参数。通过集合来管理多
21、个同类对象的情况一通过集合来管理多个同类对象的情况一般都可以设计索引器以访问集合中的对象。般都可以设计索引器以访问集合中的对象。1.定义索引器04 二月 20235.4 5.4 索引器索引器(1)使用索引器可以用类似于数组的方式为对象建立)使用索引器可以用类似于数组的方式为对象建立索引。索引。(2)get访问器返回值。访问器返回值。set访问器分配值。访问器分配值。(3)this关键字用于定义索引器。关键字用于定义索引器。(4)value关键字用于定义由关键字用于定义由set索引器分配的值。索引器分配的值。(5)索引器不必根据整数值进行索引,由您决定如何)索引器不必根据整数值进行索引,由您决定
22、如何定义特定的查找机制。定义特定的查找机制。(6)索引器可被重载。)索引器可被重载。(7)索引器可以有多个形参,例如当访问二维数组时。)索引器可以有多个形参,例如当访问二维数组时。索引器具有以下特点:04 二月 20235.4 5.4 索引器索引器例:在原有例:在原有Student类的基础上,创建类的基础上,创建一个学生班级类(一个学生班级类(StudentClass),),并在其中创建了索引器,以方便访问指并在其中创建了索引器,以方便访问指定序号的学生对象。定序号的学生对象。04 二月 20235.4 5.4 索引器索引器索引器与属性类似,通过索引器与属性类似,通过get和和set访问器来访
23、访问器来访问对应的对象,但写法不同,索引器的使用一般是问对应的对象,但写法不同,索引器的使用一般是通过包含有索引器的对象名称和索引对象的序号组通过包含有索引器的对象名称和索引对象的序号组成,如:对象名成,如:对象名索引序号索引序号,即是对应的对象,当,即是对应的对象,当它处于赋值符号左侧时,即调用它处于赋值符号左侧时,即调用set访问器,把赋访问器,把赋值符号右侧的值保存到索引器中,而当它处于赋值值符号右侧的值保存到索引器中,而当它处于赋值符号右侧时,即调用符号右侧时,即调用get访问器,获得索引到的对访问器,获得索引到的对象。象。例:通过索引器来管理多个学生对象。例:通过索引器来管理多个学生
24、对象。2.应用索引器04 二月 20235.5 5.5 方法定义及调用方法定义及调用方法是通过指定访问控制符、返回值、方法名方法是通过指定访问控制符、返回值、方法名称和参数在类中声明的。这些统称为方法的称和参数在类中声明的。这些统称为方法的“签名签名”。方法参数括在括号中,每个参数需要指明参方法参数括在括号中,每个参数需要指明参数对应的数据类型,并用逗号隔开,参数名必须符数对应的数据类型,并用逗号隔开,参数名必须符合标识符规定。合标识符规定。类中定义方法的基本语法格式为:类中定义方法的基本语法格式为:方法的访问控制符方法的访问控制符 返回值类型返回值类型 方法名方法名(参数列表参数列表)/方法
25、体,即方法中处理数据的实现过程;方法体,即方法中处理数据的实现过程;/如果需要还可以有返回值;如果需要还可以有返回值;1.定义方法04 二月 20235.5 5.5 方法定义及调用方法定义及调用方法名必须符合方法名必须符合C#语言中标识符的规语言中标识符的规定,一般由方法所完成功能的英文名称组成,定,一般由方法所完成功能的英文名称组成,各英文单词的首字母大写,推荐遵循代码规各英文单词的首字母大写,推荐遵循代码规范化要求设计方法名。方法定义的位置与类范化要求设计方法名。方法定义的位置与类中的字段、属性和索引器一样,在类的直接中的字段、属性和索引器一样,在类的直接内部。内部。1.定义方法04 二月
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序设计 教程
限制150内