版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第五章,面向对象编程基础,本章要点。通过本章的学习,读者可以理解和掌握类的概念和定义,类的实例对象的创建和使用,构造函数的定义和使用,方法的参数传递和重载,以及静态方法和实例方法的区别和特点。类5.2和5.2.1的声明类是C#的自定义数据类型。其声明格式为:属性类修饰符类类名字段声明构造函数方法属性,类Person私有字符串名称;私人互联网时代;私人长标识;公共人员(字符串n,int a,long i)名称=n;年龄=a;ID=i。公共无效显示()控制台。写线(名称:0,名称);控制台。写线(年龄:0,年龄);控制台。写线(名称:0,标识);示例5-1声明一个People类,其中包含姓名、年龄
2、和身份证号。5.2.2以类实例创建的格式创建类实例:类名实例名=新类名(参数);例如,创建一个Person类的实例:Person myTest1=new Person(“张三”,21,60012);您也可以分两步创建Person类的实例:Person My Test 2;我的测试2=新人(“张三”,21,60012);(1) myTest1和myTest2都是Person类的实例,并且分配了两个不同的存储空间。但是它们有相同的结构。(2) myTest1和myTest2可以访问它们各自类中的公共类型数据或成员函数。5.2.3类成员,包括数据成员和函数成员。数据成员包括:种要处理的数据类型,包括
3、常量和字段。函数成员包括方法、属性、事件、索引器、运算符、实例构造函数、析构函数和静态构造函数。类的具体成员有以下类型:常量:它表示与类相关的常量值,是一个变量,其在类中声明的值保持不变。字段:类中的变量,相当于c语言中的成员变量。方法:完成类中的各种计算或函数运算。属性:定义类的值,并为它们提供读写操作。事件:由一个类生成的解释发生了什么的通知。索引器:也称为下标指示器,它允许程序员在访问数组时通过索引器访问一个类的多个实例。运算符:定义类的实例可以使用的运算符。构造函数:类实例化时首先执行的函数,主要完成对象初始化操作。析构函数:对象被销毁前执行的最后一个函数,主要是在对象结束时完成收尾工
4、作。示例5-2使用年龄字段、年龄属性和部门常数创建学生班级。class Student /定义学生类私有int nAge。/定义字段nageprivate常量字符串s department=computer/定义常数部分公共整数年龄/定义属性年龄获取/获取属性值(字段值)返回nAgeSet/将属性值(字段值)设置为该值。公共字符串部门/只读属性部门获取返回部门;静态无效主(字符串参数)学生s=新学生();/创建对象,年龄=20;/设置控制台属性值。写线(年代);/获取控制台属性值。写线(部门);控制台。ReadLine();5.2.4静态成员和实例成员,1。当使用静态修饰符将成员声明为静态成员
5、时,静态成员属于一个类,并由该类的所有实例共享。静态成员只能由类调用,不能由对象调用。2.成员是在没有静态修饰符的情况下声明的,静态修饰符称为实例成员,实例成员属于类的实例。,示例5-3声明了一个带有静态成员和实例成员的学生类,类Student public int SNO;公共静态int计数;SNO公立学校学生;计数;公共无效显示(控制台)。写线(计数=0,SNO=1,计数,SNO);班级程序静态无效主(字符串参数)学生s1=新学生(12);s1 .显示();学生s2=新生(20);s2 .显示();程序输出结果是:计数=1,SNO=12;计数=2,SNO=20;解释:(1)在这个例子中,计
6、数是一个静态成员,属于学生类。因此,每次生成学生实例时,静态成员计数将自动增加1,以记录学生总数。(2) SNO是一个实例的成员,该实例因实例而异。5.2.5访问修饰符,(1) public声明公共成员,对公共成员的访问不受限制,公共成员可以从类的外部、内部和派生类中访问;(2) private声明私有成员,只能由类中的成员访问,不能由外部访问。(3)受保护的声明保护成员,这些成员可以被类和派生类中的成员访问。(4)内部声明内部成员,内部成员只能在同一项目的文档中访问。(5)受保护的内部只能由当前项目或从项目类继承的类访问。5.3构造函数和析构函数,5.3.1构造函数是一个特殊的成员函数,主要
7、用于为对象分配空间和完成初始化。构造函数的特殊性表现在以下几个方面。构造函数的名称必须与类名相同;构造函数可以接受参数,但没有返回值;定义对象时,会自动调用构造函数;构造函数也可以重载,但不能被继承;如果没有为类定义构造函数,编译系统将自动保留默认构造函数;5.3构造函数和析构函数,5.3.4析构函数是一个特殊的成员函数,主要用于释放类实例。析构函数特殊性表现在以下几个方面。析构函数的名称与类名相同,但前面有一个 符号;析构函数不能接受参数或返回值;当对象被撤销时,析构函数被自动调用。析构函数不能被继承或重载。如果没有为该类定义析构函数,编译系统将自动保留默认析构函数。5.4方法,5.4.1方
8、法声明方法声明语法形式:方法修饰符返回类型方法名称(参数表)方法体,例5-6在下面的程序中,MyArea类定义了两种方法来计算三角形和圆形的面积,my area类公共双缠结面积(双a,双h)双s;s=a * h/2;返回s;公共双循环(双r)双s;s=3.14 * r * r返回s;5.4.2方法参数,1值参数是一个形式参数,在方法声明时不会被修改,这表明真正的参与是通过形式参数之间的值传递的。示例5-7以下程序演示了当Sort方法传递一个值参数时,对形式参数的修改不会影响其实际参数。5.4.2方法的参数,类程序静态无效排序(int x,int y,int z)int temp;/如果(x y
9、) temp=x,则将x、y和z从小到大排序;x=y;y=温度;如果(x z)温度=x;x=z;z=温度;如果(y z)温度=y;y=z;z=温度;控制台。WriteLine(a=0,b=1,c=2,x,y,z);a、b、c中的静态无效主参数(字符串参数);a=20b=10c=5;排序(a、b、c);控制台。WriteLine(a=0,b=1,c=2,a,b,c);5.4.2方法参数,2个引用参数如果您调用一个方法,您期望能够对传递给它的实际变量进行操作,并且不可能通过值传递。因此,C#使用ref修饰符来解决这类问题,它告诉编译器实际参与的参数是通过引用传递的。引用不同于值参数。引用参数不会创
10、建新的内存位置,但它与方法调用中的实际参数变量是同一个内存位置。因此,方法中形式参数的修改就是外部参数变量的修改。例5-8将例5-7程序中排序法的值参数传递方式改为引用参数传递,并观察运行结果。,类我的班级公共空排序(引用int x,引用int y,引用int z)内部温度;/将x,y,z按从小到大排序如果(x y)温度=x。x=y;y=温度;如果(x z)温度=x。x=z;z=温度;如果(y z)温度=y。y=z;z=温度;控制台WriteLine(a=0,b=1,c=2,x,y,z);类程序静态无效主(字符串参数)Myclass m=新my class();int a,b,c;a=20b=
11、10c=5;排序(参考a、参考b、参考c);控制台WriteLine(a=0,b=1,c=2,a,b,c);5.4.2方法的参数3 .输出参数在参数前加在外修饰符的被称为输出参数,它与裁判员参数很相似,只有一点除外,就是它只能从方法中传出值,而不能从方法调用处接受实参数据。在方法内在外参数被认为是未赋过值的,所以在方法结束之前应该对在外参数赋值【、】例5-9】求一个数组元素中的最大值、最小值和平均值类我的班级公共void MaxMinaray(int a,out int max,out int min,out double avg)int sum;sum=max=min=A0 for(int
12、I=1;I max)max=ai;if(ai min)min=ai;sum=ai平均值=总和/长度;类程序静态无效主(字符串参数)Myclass m=新my class();int分数=66,33,4,5,81,32,56;int smax,smin双重储蓄;m . MaxMinArray(得分,得分,得分,得分,得分);控制台。写入(最大值=0,最小值=1,平均值=2,最大值,最小值,最大值);5.4.4方法的重载,1 .参数类型重载的方法【例5-12】下面程序定义的我的班级类中含有三个名为丙烯腈-丁二烯-苯乙烯的方法,它们只是参数类型不同,在主要的中调用该方法时编译系统会根据不同的参数类型确定调用哪个方法类我的班级公共int Myabos(int x)int xa bs;如果(x=0)xabs=x;否则xabs=-x;返回xabs公共浮点Myabs(浮点x)浮点xabs如果(x=0)xabs=x;否则xabs=-x;返回xabs公共长Myabs(长x)长xabs如果(x=0L)xabs=x;否则xabs=-x;返回xabs,类程序静态无效主(字符串参数)Myclass m=新my class();int a=-54;浮子b=-89.54f;长c=-23456升;控制台WriteLine(|a|=0,|b|=1,|c|=2,m . Myabas(a),m . Myabas(b)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 法式铠甲守护安全
- 触电测试题及答案
- 传真机测试题及答案
- 2026苏教版六年级数学上册第七单元第4课时《练习十四》教案
- 护理查对的法律法规
- 护理人文关怀理念
- 护理病区护理不良事件分析与处理
- 护理护理信息技术:数字化时代护理信息技术的应用
- 2026年头部媒体发稿平台综合实力研究:15万+媒体资源矩阵规模优势资源整合能力的行业标杆实证-头部媒体发稿平台深度测评与未来趋势
- 护理风险识别与防范评估
- 从输血到患者血液管理《临床用血技术规范(2025版)》解读
- 2026年顺丰速运快递员面试问题及答案详解
- 国家基层糖尿病防治管理指南(2025)解读
- 第25课《文言文二则:曹冲称象》课件 统编版语文六年级上册
- 呼吸机脱机流程规范
- 2025年新高一英语暑假专项提升(人教版)动词时空密码速通(时态语态与主谓一致考点解析)
- 牛羊屠宰车间管理制度
- 潞安化工集团招聘2025笔试题库官方
- 2025年版云南省劳动合同范本下载
- 小学长元音知识讲解
- 个人防护PPE培训课件
评论
0/150
提交评论