




已阅读5页,还剩26页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第5章面向对象编程基础 本章要点 通过本章的学习 使读者 了解并掌握类的概念和定义方法 掌握类的实例对象的创建和使用方法 了解并掌握构造函数的定义和使用方法 理解和掌握方法的参数传递和方法的重载 了解静态方法与实例方法的区别及特点 5 2类 5 2 1类的声明类是C 的一种自定义数据类型 其声明格式为 属性 类修饰符 class类名 字段声明 构造函数 方法 属性 classPerson privatestringname privateintage privatelongID publicPerson stringn inta longi name n age a ID i publicvoidDisplay Console WriteLine Name 0 name Console WriteLine Age 0 age Console WriteLine Name 0 ID 例5 1 声明一个Person类 包含姓名 年龄和身份证号 5 2 2创建类实例 类实例创建格式 类名实例名 new类名 参数 例如 创建Person类的实例 PersonmyTest1 newPerson 张三 21 60012 也可以分两步创建Person类的实例 PersonmyTest2 MyTest2 newPerson 张三 21 60012 1 myTest1和myTest2都是类Person的实例化 分配了两块不同的存储空间 但它们的结构相同 2 myTest1和myTest2就可以分别访问各自类中的公有类型数据或成员函数 5 2 3类成员 类成员包括数据成员和函数成员 数据成员包括 类要处理的数据 它包括常数和字段 函数成员包括 方法 属性 事件 索引器 运算符 实例构造函数 析构函数和静态构造函数 类的具体成员有以下类型 常量 代表与类相关的常数值 是在类中声明的值不变的变量 字段 类中的变量 相当于C 中的成员变量 方法 完成类中各种计算或功能操作 属性 定义类的值 并对它们提供读写操作 事件 由类产生的通知 用于说明发生了什么事情 索引器 又称下标指示器 允许编程人员访问数组时 通过索引器访问类的多个实例 运算符 定义类的实例能使用的运算符 构造函数 在类被实例化时首先执行的函数 主要完成对象初始化操作 析构函数 在对象被销毁之前最后执行的函数 主要完成对象结束时的收尾工作 例5 2 创建一个学生类 学生类有年龄字段 年龄属性和所属系部常量 classStudent 定义学生类 privateintnAge 定义字段nAgeprivateconststringsDepartment Computer 定义常量sDepartmentpublicintAge 定义属性Age get 获取属性值 字段值 returnnAge set 设置属性值 字段值 this nAge value publicstringDepartment 只读属性Department get returnsDepartment staticvoidMain string args Students newStudent 创建对象s Age 20 设置属性值Console WriteLine s Age 获取属性值Console WriteLine s Department Console ReadLine 5 2 4静态成员与实例成员 1 当用static修饰符声明成员叫静态成员 静态成员属于类 为这个类的所有实例所共享 静态成员只能由类来调用 不能由对象调用 2 不用static修饰符声明成员 称为实例成员 实例成员属于类的实例 例5 3 声明一个含有静态成员和一个实例成员的Student类 classStudent publicintSNO publicstaticintcount publicStudent ints SNO s count publicvoiddisplay Console WriteLine count 0 SNO 1 count SNO classProgram staticvoidMain string args Students1 newStudent 12 s1 display Students2 newStudent 20 s2 display 程序输出结果为 count 1 SNO 12 count 2 SNO 20 说明 1 在本例中 count是静态成员 属于类Student 所以 每生成一个学生实例 静态成员count就自动增一 记录学生总数 2 SNO是实例成员 随实例的不同而不同 5 2 5访问修饰符 1 public声明公有成员 对公有成员访问不受限制 可以从类的外部 内部和派生类访问公有成员 2 private声明私有成员 私有成员只能被类中的成员访问 外部无法访问 3 protected声明保护成员 保护成员可以被类中成员和派生类访问 4 internal声明内部成员 内部成员只有在同一工程中的文件内才是可访问的 5 protectedinternal只限于当前项目 或者从该项目的类继承的类才可以访问 5 3构造函数和析构函数 5 3 1构造函数构造函数是特殊的成员函数 它主要用于为对象分配空间 完成初始化工作 构造函数特殊性表现在以下几方面 构造函数的名字必须与类名相同 构造函数可以带参数 但没有返回值 构造函数在对象定义时被自动调用 构造函数也可以重载 但不可以被继承 如果没有给类定义构造函数 则编译系统会自动生存一个默认的构造函数 5 3构造函数和析构函数 5 3 4析构函数析构函数是特殊的成员函数 它主要用于释放类实例 析构函数特殊性表现在以下几方面 析构函数的名字与类名相同 但它前面加了一个 符号 析构函数不能带参数 也没有返回值 当撤消对象时 析构函数被自动调用 析构函数不能被继承 也不能重载 如果没有给类定义析构函数 则编译系统会自动生存一个默认的析构函数 5 4方法 5 4 1方法的声明方法的声明的语法形式 方法修饰符 返回类型方法名 形参表 方法体 例5 6 在下面程序中 MyArea类定义了两个方法以求三角形和圆的面积 classMyAream publicdoubleTangleArea doublea doubleh doubles s a h 2 returns publicdoubleCircleArea doubler doubles s 3 14 r r returns 5 4 2方法的参数 1 值参数在方法声明时不加修饰的形参数 它表明实参与形参之间按值传递 例5 7 下面的程序演示了当方法Sort传递的是值参数时 对形参的修改不影响其实参 5 4 2方法的参数 classProgram staticvoidSort intx inty intz inttemp 将x y z按从小到大排序if x y temp x x y y temp if x z temp x x z z temp if y z temp y y z z temp Console WriteLine a 0 b 1 c 2 x y z staticvoidMain string args inta b c a 20 b 10 c 5 Sort a b c Console WriteLine a 0 b 1 c 2 a b c 5 4 2方法的参数 2 引用参数如果调用一个方法 期望能够对传递给它的实际变量进行操作 按值传递是不可能实现的 所以C 用了ref修饰符来解决此类问题 它告诉编译器 实参与形参的传递方式是引用 引用与值参数不同 引用参数并不创建新的存储单元 它与方法调用中的实参变量同处一个存储单元 因此 在方法内对形参的修改就是对外部实参变量的修改 例5 8 将例5 7程序中Sort方法的值参传递方式改成引用参数传递 观察运行结果 classMyclass publicvoidSort refintx refinty refintz inttemp 将x y z按从小到大排序if x y temp x x y y temp if x z temp x x z z temp if y z temp y y z z temp Console WriteLine a 0 b 1 c 2 x y z classProgram staticvoidMain string args Myclassm newMyclass inta b c a 20 b 10 c 5 m Sort refa refb refc Console WriteLine a 0 b 1 c 2 a b c 5 4 2方法的参数 3 输出参数在参数前加out修饰符的被称为输出参数 它与ref参数很相似 只有一点除外 就是它只能从方法中传出值 而不能从方法调用处接受实参数据 在方法内out参数被认为是未赋过值的 所以在方法结束之前应该对out参数赋值 例5 9 求一个数组元素中的最大值 最小值和平均值 classMyclass publicvoidMaxMinArray int a outintmax outintmin outdoubleavg intsum sum max min a 0 for inti 1 imax max a i if a i min min a i sum a i avg sum a Length classProgram staticvoidMain string args Myclassm newMyclass int score 66 33 4 5 81 32 56 intsmax smin doublesavg m MaxMinArray score outsmax outsmin outsavg Console Write Max 0 Min 1 Avg 2 smax smin savg 5 4 4方法的重载 1 参数类型重载的方法 例5 12 下面程序定义的Myclass类中含有三个名为abs的方法 它们只是参数类型不同 在Main中调用该方法时编译系统会根据不同的参数类型确定调用哪个方法 classMyclass publicintMyabs intx intxabs if x 0 xabs x elsexabs x returnxabs publicfloatMyabs floatx floatxabs if x 0 xabs x elsexabs x returnxabs publiclongMyabs longx longxabs if x 0L xabs x elsexabs x returnxabs classProgram staticvoidMain string args Myclassm newMyclass inta 54 floatb 89 54f longc 23456L Console WriteLine a 0 b 1 c 2 m Myabs a m Myabs b m Myabs c 运行结果如下 2 参数个数重载的方法 classMyclass publicfloatMyArea floatr return r r 3 14f publicfloatMyArea floata floath return a h 0 5f publicfloatMyArea floata floatb floath return a b h 0 5f 例5 13 参数个数的方法重载 参数个数重载 classProgram staticvoidMain string args Myclassm newMyclass floatr 1 5f floata 2 0f b 2 5f h 1 2f Console WriteLine 圆面积 0 梯面积 1 三角面积 2 m MyArea r m MyArea a b h m MyArea a h 运行结果如下 5 5属性 5 5 1属性的定义和使用通常 创建一个属性包含两个步骤 声明一个私有字段来存储属性值 编写一个属性声明 为属性值提供访问接口 声明属性的一般形式为 访问修饰符 类型名属性名 get return私有字段 set 私有字段 value 例5 15 属性的最基本形式和用法 属性的读写控制 publicclassStudent privatestringstudName privateintstudID publicstringStudentName get returnstudName set studName value value是关键字 publicclassTest publicstaticvoidMain string args StudentAstudent newStudent Astudent StudentName ZhangSan stringaName Astudent StudentName Console WriteLine aName 5 5 2属性的读写控制 例5 16
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 海洋生物入侵种防控考核试卷
- 精密陶瓷制造设备考核试卷
- 针织服装的设计与产品生命周期管理考核试卷
- 连续搬运设备人机交互设计考核试卷
- 国培学习成果总结汇报
- 白血病疾病查房
- 口腔护理工艺流程图解
- 胸部CT常见疾病诊断要点
- 口腔黏膜炎护理
- Gilvusmycin-生命科学试剂-MCE
- 【企业薪酬管理研究国内外文献综述4400字】
- 市政公用工程设计文件编制深度规定(2013年高清版)
- GB/T 19139-2012油井水泥试验方法
- GB/T 18314-2001全球定位系统(GPS)测量规范
- 工贸行业重点可燃性粉尘目录(2022版)
- 铁道概论试题及答案重要
- 空间几何中的平行与垂直 新高考 数学 一轮复习专项提升 精讲精练
- 近代史期末复习试题
- 教学设计 完整版:Summer holiday plans
- 2022年武汉市法院书记员招聘考试题库及答案解析
- DB34-T 4010-2021 水利工程外观质量评定规程-高清现行
评论
0/150
提交评论