




已阅读5页,还剩40页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第三部分面向对象程序设计 3 1面向对象与面向过程 面向过程 由一些相对独立的函数来完成一个任务 数据和函数分离structWindow 定义窗口数据结构intsize intcolor POSITIONposition window setWindowProperty hwnd window 设置窗口属性getWindowProperty hwnd window 取得窗口属性HideWindow hwnd 隐藏窗口ShowWindow hwnd 显示窗口MoveWindow hwnd 移动窗口 3 1面向对象与面向过程 classwindow intsize intcolor POSITIONposition setProperty intsize intcolor POSITIONposition 设置窗口属性getProperty 取得窗口属性Hide 隐藏窗口Show 显示窗口Move 移动窗口 windowwin win setProperty win getProperty win Hide win Show win Move 3 2C 类简介 类是对某一类事物的描述 是抽象的 概念上的定义 对象是实际存在的该类事物的个体 也成实例 需要分配内存空间 3 2 1类的定义 classPerson privateintage 字段 域 publicPerson 构造方法publicvoidshout 方法 Console WriteLine 执行Person类的shout 方法 Person 析构方法 3 2 1类的定义 classPerson privateintage publicSetAge inttheage age theage publicintGetAge returnage 属性 classPerson privateintage publicintAge 定义字段age的属性 get returnage set age value 只读属性 只有get访问器只写属性 只有set访问器 公共访问接口 public类型的字段属性方法public 任何地方都可以访问该成员 这是具有最少限制的存取修饰符 protected 在类及所有的派生类中可以访问该成员 不允许外部访问 private 仅仅在同一个类的内部才能访问该成员 甚至派生类都不能访问它 构造方法与析构方法 例3 2 1 cs 构造方法在类对象创建的时候执行 一般进行初始化操作析构方法在垃圾回收器进行垃圾回收时调用不建议在析构方法中执行释放资源的操作 构造方法 构造方法名必须与类名相同构造方法不声明返回类型构造方法总是public类型的 this关键字 this关键字引用类的当前实例classPerson privateintage publicSetAge inttheage this age theage publicintGetAge returnthis age 由于静态成员函数存在于类一级 并且不是对象的一部分 因此没有this指针 在静态方法中引用this是错误的 this的常用用途 1 限定被相似的名称隐藏的成员classPerson privateintage publicSetAge intage this age age publicintGetAge returnthis age 2 声明索引器 3 2 2C 常用类 Console类String类Stringbuilder类 Console类 Console类的属性 BufferHeight 表示控制台窗口的缓冲区高度BufferWidth 表示控制台窗口的缓冲区宽度WindowHeight 表示控制台窗口的高度WindowWidth 表示控制台窗口的宽度BackgroundColor 表示控制台窗口的背景色ForegroundColor 表示控制台窗口的前景色Title 表示控制台窗口的标题 Console类 Console类的常用方法 Write 输出给定的字符串WriteLine 输出给定的字符串后换行Read 读取一个字符ReadLine 读取正行输入 格式化字符串 C 表示以货币形式输出当前数字 并会在该货币型数字前输出一个表示当地货币符号的字符D 以十进制输出当前数字E 表示以科学计数法输出当前数字F 表示以固定小数位输出当前数字N 表示以标准的数字计数法格式化输出当前字符X 表示以十六进制格式化输出当前字符 String类 String类的别名是stringString类型表示Unicode字符串字符串是不可变的 字符串对象一旦创建 其内容就不能更改 每次使用String类中的一个方法时都要在内存中创建一个新的字符串对象 字符串的声明和初始化 定义字符串最基本的方式是把一个双引号括起来的字符串赋给一个string类型的变量 strings abcdef stringdirectory C text 加入转义字符stringdirectory C text 以 符号开头 字符串原样输出 字符串的处理 string类型变量可以看作是char变量的只读数组 这样 就可以使用下面的语法访问每个字符 stringmyString abcdef charmyChar myString 1 同时 我们还可以使用ToCharArray 函数 把string类型的变量转存到字符数组里面了 一个string转化为字符数组的例子 例把一个string变量的所有值存放到一个字符数组里面去 程序代码 usingSystem usingSystem Collections Generic usingSystem Text namespacestringExample classProgram staticvoidMain string args stringstr abcdef char myChar str ToCharArray Console WriteLine 字符数组myChar输出如下 foreach charcinmyChar Console WriteLine 0 c Console ReadLine 字符串的拼接 字符串的串接 合并 是指使用 符号连接前后两个字符串 stringcity 南京市 stringstreet 新街口 stringaddress city street Console WriteLine 地址是 address 上述代码的输出结果为 地址是 南京市新街口 String类的方法和属性 例StringTest String类有很多方法和属性 常见的有 Length属性 ToUpper ToLower方法 IndexOf方法 SubString方法Insert方法Remove方法 StringBuilder类型 System Text StringBuilder表示可变字符字符串StringBuilderstrb newStringBuilder hello 50 用法和string类似 3 3面向对象编程思想 封装继承多态 3 3 1封装 例EncapsulationTest 每个对象都包括自己进行操作所需要的所有信息 而不依赖于其他对象来完成自己的操作 这样的方法和属性通过类的实例来实现 好处 良好的封装可以降低耦合度 类的内部可以自由修改 类具有对外的清晰接口 3 3 2继承 例InheritanceTest IS A的关系 Ais aB A是B A可以继承B A是B的一个特例 特殊化 A又可以具备自己独有的个性 1 子类拥有父类非private的属性和功能 父类的构造函数例外 可以用base关键字访问 base代表着父类 2 子类具有自己的属性和功能 即子类可以扩展父类没有的属性和功能 3 子类可以以自己的方式重写父类的功能 继承的好处是代码重用 哲学上讲事物都是有共性和特性的 把共性函数代码放入到父类中 把特性函数代码放入到子类中 3 3 3多态 例Virtual Override 继承是使子类可以使用父类的功能 而多态使父类能使用子类的功能 1 子类以父类的身份出现 2 子类在运行时以自己的方式实现 3 子类以父类的身份出现时 子类特有的属性和方法不可以使用 抽象类和抽象方法 例AbstractTest 抽象类的用途是提供多个派生类可共享的基类的公共定义抽象类不能被实例化使用abstract关键字定义abstractclassMyClass 抽象类和抽象方法 例AbstractMethod 在抽象类中只声明方法 而不实现方法 而由该抽象类的派生类来重写该方法抽象方法所属的类必须是抽象类抽象类的派生类必须实现基类中所有的抽象方法abstractpublicvoidSayHello 成员隐藏 例HideMethod 子类中用同名方法隐藏父类中的方法和virtual override的区别 3 4类成员详解 方法重载参数传递静态成员 3 4 1方法重载 例Method classmyclass publicintAdd intx inty returnx y publicdoubleAdd doublex doubley returnx y publicstringAdd stringx stringy returnx y 3 4 2参数传递 在调用函数的时候 可以向函数传递参数列表 C 中函数的参数有4种类型 值参数 不含任何修饰符 引用型参数 以Ref修饰符声明 输出参数 以Out修饰符声明 数组型参数 以Params修饰符声明 值参数 例Params 10 20 a b MyFuction a b 10 20 a的副本 b的副本 复制 1000 1004 MyFuction inta intb 引用型参数 例Params 10 20 a b MyFuction refa refb 1000 1004 a的地址 1000 b的地址 1004 输出型参数 例Params 30 40 a b MyFuction a b 执行完后a b的值 数组型参数 例Params C 允许为函数指定一个 只能指定一个 特定的参数 这个参数必须是函数定义中的最后一个参数 成为数组型参数 数组型参数可以使用个数不定的参数调用函数 它可以使用params关键字来定义 另外 参数只允许是一维数组 比如int 和int 类型都可以作为数组型参数 而int 则不可以 最后 数组型参数不能再有Ref和Out修饰符 3 4 3静态成员 例StaticMember 静态字段静态属性静态方法静态构造方法可以在不声明类的对象的情况下直接使用类的成员 起到全局变量的作用不能通过类对象引用静态成员 而通过类名引用类的所有对象共用同一个静态成员 相当于全局变量 3 5接口与集合 例InterFaceTest 接口是一个约定 实现接口的类必须遵循该约定接口只包括成员的声明 不包括成员的实现接口的成员包括 方法 属性 索引和事件实现接口的类必须实现接口的所有成员不能向成员或接口自身附加权限 static virtual abstract和sealed等 接口不能定义构造方法 InterfaceIMyInterface 接口和抽象类的异同 接口和抽象类都不能被实例化接口不能包括方法的实现 抽象类可以从接口继承的类必须实现其所有成员 抽象类则不必类可以继承自多个接口 但只能继承一个类 3 5接口与集合 例ArrayListTest ArrayList Queue Stack HashTable ICollection接口 IDictionary接口 3 6泛型 非泛型集合的优缺点ArrayListmyArrayList newArrayList myArrayList Add 10 myArrayList Add hello myArray
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 基层医学考试面试题目及答案
- 铁路专用线改造工程风险评估报告
- 市政排水系统与雨水管网衔接方案
- 高蛋白生物饲料生产加工项目节能评估报告
- 考点解析人教版八年级上册物理声现象《声音的产生与传播》专项测评试题(含解析)
- 2025年口腔全麻护理技术试题库及答案
- 2025年广东护理解剖学题库及答案
- 难点解析-人教版八年级上册物理《物态变化》定向测试试卷(附答案详解)
- 机械加工类安全考试题及答案
- 考点攻克苏科版八年级物理下册《力与运动》章节测试试卷(含答案详解)
- 肝功能不全的护理查房
- 《客舱安全与应急处置》-课件:释压的类型和迹象
- 传统节日文化在现代社会的传承与创新 初中综合实践活动九年级下册+
- 舰艇轮机岗位述职报告
- 锅炉维保报告
- 游乐设备施工方案
- 结肠多发息肉护理查房
- 幼儿园食品安全总监的职责要求
- 花篮拉杆式悬挑脚手架工程技术交底
- 生命周期成本计算
- (完整版)法律文书送达地址确认书
评论
0/150
提交评论