C# 第四章 封装抽象.ppt_第1页
C# 第四章 封装抽象.ppt_第2页
C# 第四章 封装抽象.ppt_第3页
C# 第四章 封装抽象.ppt_第4页
C# 第四章 封装抽象.ppt_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

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

文档简介

面向对象编程 C 在本章中 您将学习 定义抽象和封装使用访问指定符实现封装使用方法 目标 封装和抽象是任何面向对象编程语言的重要特性 抽象涉及仅抽取相关的信息 封装涉及将一个或多个组件打包在一起 介绍抽象和封装 封装从字面上解释为 包围或者密封 封装定义成将物理或逻辑包中的一个或多个项放入封套的过程 它防止对不需要的信息的访问 定义封装 访问指定符定义一定范围的类成员 类成员引用类中的变量和函数 程序可以有一个或多个类 您可能希望类的某些成员能够被其他类访问 但是 您也可能不希望类的某些成员被类之外的其他类访问 使用访问指定符实现封装 C 支持以下访问指定符 publicprivateprotectedinternalprotectedinternal 访问指定符的类型 Teacher类 private成员 protected成员 public成员 internal成员 Student类 只有Student类在Teacher类都在同一程序集中 才可访问internal成员 不可访问 不可访问 可以访问 classProgram staticvoidMain string args studentsstu newstudents stu name cy stu age 12 privateclassstudents publicstringname stringage classProgram student staticvoidMain string args Programp newProgram p name cy p addr 西南石油大学 classstudent protectedstringname stringaddr studentp newstudent 问题描述 编写一个能够计算长方形和矩形面积的程序 活动 使用访问指定符计算面积和体积 方法由一个或多个程序语句组成 通过引用方法名能够执行方法 要使用方法 您需要 定义方法调用方法 使用方法 定义方法 定义方法意味着声明其结构的元素 请注意定义方法的语法 ParameterList MethodBody 定义方法 续 方法声明的元素包括方法名 参数列表 返回类型和方法主体 以下是方法的元素 访问指定符返回类型方法名参数列表方法主体让我们了解方法声明的每个元素 定义方法 续 定义方法意味着声明其结构的元素 请注意定义方法的语法 ParameterList MethodBody 确定能够访问变量或方法的其他类的范围 定义方法意味着声明其结构的元素 请注意定义方法的语法 ParameterList MethodBody 定义方法 续 方法能够返回任何类型的值 如果方法不返回任何值 则使用空作为返回类型 定义方法意味着声明其结构的元素 请注意定义方法的语法 ParameterList MethodBody 定义方法 续 这是唯一的标识并且是区分大小写的 方法名不能与变量名或类中声明的其他非方法项相同 定义方法意味着声明其结构的元素 请注意定义方法的语法 ParameterList MethodBody 定义方法 续 用于传递和接收来自方法的数据 它在圆括号之间 即使没有参数 也要有圆括号 定义方法意味着声明其结构的元素 请注意定义方法的语法 ParameterList MethodBody 定义方法 续 包含完成要求操作所需的指令集 定义方法后 您可以通过调用它来执行 您可以通过方法名调用它 方法名后跟圆括号 即使方法调用没有参数 圆括号还是要保留 如以下示例所示 MethodName 调用方法 以下是调用方法的示例 usingSystem classCalculator publicintAddNumber intnum1 intnum2 intresult result num1 num2 returnresult 调用方法 续 staticvoidMain string args Calculatorcal newCalculator Thefollowingstatementiscallingthe AddNumbermethodandpassing10and 20astheparameterlist intvalue cal AddNumber 10 20 Console WriteLine Theresultis 0 value Console ReadLine 调用方法 续 递归调用 N 也可以用参数来声明方法 考虑用参数声明方法的例子 voidDisplayResult intresult 当使用参数声明方法时 这些方法应该使用参数来调用 带有参数的方法是通过使用以下机制传递值被调用的 值引用 ref输出 out 使用带参数的方法 值传递的参数在内存中创建一个副本 以下示例显示值传递的参数 voidCalculateSum intnum1 intnum2 voidAccept intval1 10 intval2 2 CalculateSum val1 val2 使用带参数的方法 续 classCzMath publicvoidSwap doublea doubleb doubletemp a a b b temp Console WriteLine a 0 b 1 a b classProgram staticvoidMain string args doublea 100 doubleb 150 CzMathc newCzMath c Swap a b Console WriteLine a 0 a Console WriteLine b 0 b Console ReadKey 引用 引用传递的参数不在内存中创建变量的独立副本 引用参数存储传递的数据成员的内存地址 以下示例显示引用传递的参数 voidCalculateSum refintnum1 refintnum2 voidAccept intval1 10 intval2 2 CalculateSum refval1 refval2 使用带参数的方法 续 classCzMath publicvoidSwap refdoublea refdoubleb doubletemp a a b b temp Console WriteLine a 0 b 1 a b classProgram staticvoidMain string args doublea 100 doubleb 150 CzMathc newCzMath c Swap refa refb Console WriteLine a 0 a Console WriteLine b 0 b Console ReadKey classProgram publicstaticstrings staticvoidF refstringa refstringb s one a two b three Console WriteLine a 0 b 1 s 2 a b s staticvoidg F refs refs staticvoidMain string args g Console ReadKey 输出参数用于将值从方法中传递出来 以下示例显示输出传递的参数 voidCalculateSum refintnum1 refintnum2 outintresult result num1 num2 voidAccept intval1 10 intval2 2 intrecieveVal CalculateSum refval1 refval2 outrecieveVal 使用带参数的方法 续 usingSystem classTest staticvoidDivide inta intb outintresult outintremainder result a b remainder a b staticvoidMain for inti 1 i 10 i for intj 1 j 10 j intans r Divide i j outans outr Console WriteLine 0 1 2 r 3 i j ans r 实参可以不初始化 而在方法里初始化 问题描述 编写一个能够在方法中使用引用类型的参数交换数字的程序 演示 使用带参数的方法交换两个数字 课堂练习4 34练习1 练习2 静态变量 关键字 static静态变量在函数执行完成后不会消失 在整个程序中会保留其值 静态变量可以在成员函数或类定义之外初始化static意味着 对于类的所有对象 内存中仅存在一份静态变量的副本 不能进行实例化 不需创建类的实例就能获取静态变量的值如果对类应用static关键字 则该类的所有成员都必须是静态的 静态类与非静态类基本相同 但存在一个区别 静态类不能实例化 也就是说 不能使用new关键字创建静态类类型的变量 因为没有实例变量 所以要使用类名本身访问静态类的成员 静态类的主要特性 仅包含静态成员无法实例化是密封的不能包含实例构造函数 publicclassMyBaseC publicstaticintx 100 若要引用静态成员x 请使用完全限定名 如下 MyBaseC x 演示4 26 静态函数可以访问静态变量在一个静态函数中直接调用其他函数 则这些函数也必须为静态的 静态函数 classStaticExample publicstaticints publicvoidcount s publicstaticintdisplay returns classrun publicstaticvoidMain StaticExamples newStaticExample s count s count s count Console WriteLine is 0 StaticExample display 问题描述 John是ZedAxisTechnology的软件开发者 他需要检查函数调用的次数 同时 要求他创建一个函数 CountFunction 请帮助John完成此任务 课堂练习4 34练习3 练习4 在本章中 您学习了 抽象是为了保留仅与特定用途有关的信息而减少信息内容的过程 封装是隐藏某个对象的与其基本特性没有很大关系的所有详细信息的过程 访问指定符用于确定其他类或函数是否可以访问特定类的成员变量和函数 公共访问指定符允许类向其他函数和对象显示其成员变量和成员函数 专用访问指定符允许类隐藏其成员变量和成员函数 使其他类函数和对象不能访问它们 小结 受保护的访问指定符允许类隐藏其成员变量和成员函数 使其他类对象和函数不能访问它们 就像执行继承时的专用访问指定符 方法由一条或多条程

温馨提示

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

评论

0/150

提交评论