C 第6章 面向对象的程序设计4H.ppt

上传人:marr****208 文档编号:133880599 上传时间:2020-05-31 格式:PPT 页数:44 大小:654.50KB
返回 下载 相关 举报
C 第6章 面向对象的程序设计4H.ppt_第1页
第1页 / 共44页
C 第6章 面向对象的程序设计4H.ppt_第2页
第2页 / 共44页
C 第6章 面向对象的程序设计4H.ppt_第3页
第3页 / 共44页
C 第6章 面向对象的程序设计4H.ppt_第4页
第4页 / 共44页
C 第6章 面向对象的程序设计4H.ppt_第5页
第5页 / 共44页
点击查看更多>>
资源描述

《C 第6章 面向对象的程序设计4H.ppt》由会员分享,可在线阅读,更多相关《C 第6章 面向对象的程序设计4H.ppt(44页珍藏版)》请在金锄头文库上搜索。

1、面向对象的程序设计 VisualC NETProgramming 聊城大学 理工学院曹银杰caoyinjie 第六章 在C 中实现面向对象 面向对象的最基本的特征是抽象性 封装性 继承性和多态性 6 1抽象 封装 类 6 2类中的数据成员 6 3类中的方法成员 6 4类的继承性 6 5类的多态性 6 6委托 6 1抽象 封装 类 抽象 就是忽略对象 事物 中与当前目标无关的非本质特征 找出具有共性的对象划为一类 得到一个抽象的概念 类 如int是对所有整数的抽象 封装 就是把对象的属性和行为结合成一个独立的单位 类或结构 意义在于可以指定其每个成员对于该类或结构外部的可访问性 可将外部不使用的

2、方法和变量隐藏起来 以减小编码错误或遭恶意利用的可能性 C 是面向对象的编程语言 它使用类和结构来实现类型 如Windows窗体 用户界面控件和数据结构等 典型的C 应用程序有两种类 由程序员自定义的类 NETFramework提供的类C 提供了许多功能强大的类定义方式 如提供不同的访问级别 从其他类继承功能 允许实例化或销毁类型等 类的声明 类的声明语法 类修饰符 class类名 基类 数据成员列表 方法成员列表 事件成员列表 类修饰符 public 可省略 方案的任意位置都可以基于该类创建对象 private只能在本程序模块内 类名 与变量名字规则相同 数据成员列表 常量 字段 变量 属性

3、 方法成员列表 方法或静态方法的声明 事件成员列表 事件 基类 继承的基类名字 类的声明 类中成员使用的修饰符及其意义 Public公共成员可以由任何代码访问 Private私有成员只能由所属类中的代码访问 Internal内部成员只能由定义它的工程内部访问 Proteded保护成员由所属类和派生类访问 protectedinternal由所属类 派生类 定义它的工程内部访问 实例1 在命名空间中创建类 在窗体上创建文本框 按钮 进入代码编辑窗口 与窗体类并列位置创建Student类 publicclassStudent 数据成员定义列表publicstringname privateuint

4、age protectedcharsex internalstringtelephone publicstringgrade 方法成员定义列表 实例2 创建独立的类模块文件 添加类模块文件 在 项目 添加类 弹出对话框 也可以在方案窗口的项目上 点击右键的方式 选中模板 类 名称 改为Student 即可生成一个类模块文件student cs 类代码写入即可 类的实例化 创建对象 类的实例化 创建对象 语法 类名对象名 new构造函数名 参数 例 Studentobj newStudent Student类创建一个obj对象 new运算符用于调用类内的构造函数 与类同名 初始化对象 创建对象后

5、必须赋初值 也可写为两行 Studentobj obj newStudent 使用点号 访问对象的属性与方法 例 obj name 张三 在类的内部访问类的成员 可使用this this 类成员 this表示当前对象 实例3 类实例化 privatevoidbutton1 Click objectsender EventArgse Studentobj1 newStudent obj1 name 张三 obj1 grade 聊大理工学院2012级 obj1 telephone 13900000000 textBox1 Text obj1 name obj1 grade obj1 telepho

6、ne 其他类型的成员此处不可用 为什么 6 2类的数据成员 属性是对现实世界中实体静态特征的抽象 它提供了对类或对象性质的访问 C 数据成员 包括字段 常量 属性 字段 是在类范围声明的变量 字段可以是内置数值类型或其他类的实例 常量 是在类范围声明的常量 也理解为固定的字段 属性 类中的私有或保护字段 外部不可直接访问 可用属性访问器 get和set 访问 体现了对象的封装性 这样带有属性访问器的字段就是属性 属性访问器可以说是一种特殊的方法 对字段访问 同时包含get和set的属性称为读写属性 只有get的属性称为只读属性 只有set的属性称为只写属性 成员修饰符后跟static声明的属性

7、是静态属性 意义类似静态方法 类名 属性名直接使用而不能实例化后使用 实例 属性访问器 privateclassStudent privatestringname name属性成员定义publicstringName Name第1字母大写 属性可读写 set name value set通过value关键字传递赋值get returnname get通过return关键字返回属性值 privateuintage publicuintAge Age第1字母大写 只写属性 set age value protectedcharsex internalstringtelephone publicst

8、ringgrade 属性访问器 上述做法与使用public定义字段似乎没什么意义 其实我们可以写出更完善的代码 如下所示 publicstringName set if value Length 2 name value elsename 名字不完整 get returnname privatevoidbutton1 Click objectsender EventArgse Studentobj1 newStudent obj1 Name 张三 textBox1 Text obj1 Name textBox1 Text obj1 Age ToString 错误 为什么 6 3类的方法成员 方

9、法是类中用于执行计算或其它行为的成员 前面学习过static定义的静态方法 6 3 1方法的定义与调用6 3 2方法的参数传递6 3 3方法重载与运算符重载6 3 4构造函数与析构函数 6 3 1方法的定义与调用 类中定义方法成员 语法 修饰符 返回值类型方法名 参数列表 方法实现部分 return返回值表达式 访问修饰符 public private protected internal等 访问修饰符后跟static 就是前面介绍的静态方法 不能实例化直接调用 访问修饰符后跟virtual override和abstract具有特殊意义 以后介绍 返回值数据类型 无返回值用的方法void 此

10、处参数列表称形参 有返回值 需return子句 实例 方法的定义与调用 类实例化后 方法调用语法 对象名 方法名 参数列表 参数列表称实参在Student类中增加一个无返回值的say方法 publicvoidsay MessageBox Show 聊城大学 方法调用 弹出一个信息框 privatevoidbutton1 Click objectsender EventArgse Studentobj1 newStudent obj1 say 实例 返回值方法的定义与调用 在Student类中增加一个返回值的方法 publicintSum intx inty ints x y returns 返

11、回值给Sum 返回值的方法方法调用 privatevoidbutton1 Click objectsender EventArgse Studentobj1 newStudent MessageBox Show obj1 Sum 10 6 ToString 6 3 2方法的参数传递 在调用方法时 参数传递就是将实参传递给形参的过程 分为按值传递与按引用传递 1 按值传参 把实参变量的值赋给相对应的形参变量 被调用的方法所接收到的只是实参数据值的一个副本 是一种单向值传递 值类型的参数在传递时默认为按值传参 string和object虽然是引用型数据 但从表现形式来看 其具有按值传参的效果 前面

12、学习例子中 系统提供的静态方法都是按值传参的 实例4 3 用值传参进行参数值交换 按值传参实例 privatevoidbutton1 Click objectsender EventArgse stringa textBox1 Text stringb textBox2 Text swap1 a b textBox3 Text a textBox4 Text b publicvoidswap1 stringx stringy stringz z x x y y z 2 按引用传参 方法内的return语句只能返回一个值 但需要方法能够返回多个值或修改传入的参数值并返回时 可用按引用传递参数的方

13、式来实现 按引用传参 调用方将把实参变量的引用赋给相对应的形参变量 实参变量的引用代表数据值的内存地址 因此 形参变量和实参变量将指向同一个引用 方法内部形参变量的变化时 实参随之变化 从而实现返回多个值 当值类型和string类型参数要按引用方式传参时 就必须在实参或形参的前面添加ref关键字 按引用传参实例 privatevoidbutton2 Click objectsender EventArgse stringa textBox1 Text stringb textBox2 Text swap2 refa refb textBox3 Text a textBox4 Text b pu

14、blicvoidswap2 refstringx refstringy stringz z x x y y z 3 输出参数 用ref修饰的参数在传参前要求先初始化实参 但有时候参数在传参前无法确定其值 其值应由方法调用结束后返回 这时可以使用输出参数 输出参数不需要对实参进行初始化 它专门用于把方法中的数据通过形参返回给实参 但不会将实参的值传递给形参 C 通过out关键字来声明输出参数 无论是形参还是实参 只要是输出参数 都必须添加out关键字 实例4 5 用输出参数求文件路径中的目录和文件名 输出参数实例4 5 privatevoidbutton1 Click objectsender

15、EventArgse stringpath textBox1 Text stringdir file SplitPath path outdir outfile textBox2 Text dir textBox3 Text file publicvoidSplitPath stringpath outstringdir outstringFile inti i path LastIndexOf dir path Substring 0 i File path Substring i 1 4 引用类型数据的传参 引用类型参数总是按引用传递的 所以除string外的引用类型参数传递不需要使用re

16、f或out关键字 引用类型参数的传递 实际上是将实参对数据的引用复制给了形参 所以形参与实参共同指向同一个内存区域 引用类型数据的传参实例4 5 publicclassStudent publicstringname publicintage Studentstu newStudent privatevoidForm1 Load objectsender EventArgse stu name 令狐冲 stu age 19 textBox1 Text stu name textBox2 Text stu age ToString 引用类型数据的传参实例4 5 publicvoidMidStu Studentstudent 引用类型做形参 student name textBox3 Text student age Convert ToInt32 textBox4 Text privatevoidbutton1 Click objectsender EventArgse MidStu stu 调用MidStu方法 引用类型做实参textBox1 Text stu name textBox

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号