C面向对象的编程一类和对象.ppt

上传人:max****ui 文档编号:6335381 上传时间:2020-02-23 格式:PPT 页数:27 大小:388KB
返回 下载 相关 举报
C面向对象的编程一类和对象.ppt_第1页
第1页 / 共27页
C面向对象的编程一类和对象.ppt_第2页
第2页 / 共27页
C面向对象的编程一类和对象.ppt_第3页
第3页 / 共27页
点击查看更多>>
资源描述
C 面向对象编程 一 类和对象berry博客 面向对象程序设计的基本概念 对象 现实世界中某个具体的物理实体在计算机中的逻辑体现 类 同种对象的集合与抽象 属于类的对象是该类的一个实例 封装 将代码和其操作的数据捆绑在一起 防止外部对数据和代码的干扰 数据和代码以封装的形式链接起来就构成了一个对象 继承 一个对象获得另一个对象的属性 通常一个对象可以从它的父类继承所有的通用属性 多态 一个接口 多种方法 4 1类和对象 4 1 1类及成员4 1 2类的构造函数和析构函数4 1 3类的静态成员4 1 4对象的创建与使用 4 1 1类及成员 1 类类是一种对数据成员 函数成员等进行封装的数据结构 类中包括域和方法等 域表示对象的状态 方法表示对象所具有的行为 类的定义包括类头和类体 其中类体用一对大括号括起 在类体中包括域 方法 属性 索引 嵌套类定义等成员 类定义基本格式 class类名 类的成员定义 类的成员可以有 字段 方法 属性 索引器 事件 运算符等 2 类的成员类可以包含以下这些成员 字段 用于保持一个值的成员变量 方法 对数据进行加工的代码 是类中完成一个功能的函数 属性 智能字段 与字段类似 但可以实现只读或只写操作 常量 值不能改变的字段 事件 用于触发一些代码的运行 比如鼠标单击可以触发一些事件 运算 对一些标准的运算符进行重载并添加到类中 可以使代码更直接 3 类成员的访问权限 public 允许外部代码访问 private 不允许别的类访问 即使是派生类也不能访问 protected 不允许别的类访问 派生类可以访问 internal 相同名称空间中的类可以访问 类成员的访问权限用来规定类的一个成员对它所在的类之外的代码是可见还是不可见 4 定义类中的域 字段 域表示事物的性质状态 定义域的方法与变量的定义方法相同 即 类型名域名 intage 定义类和其域成员classStudent privatestringStudentName 4 1 2类的构造函数和析构函数 1 构造函数 构造函数也称构造器 是一种特殊的方法 专门用于创建对象并完成初始化工作 方法名与类的名字相同 没有返回类型 也不能写void 主要作用是完成对象的初始化工作 不能显式调用 而是由new运算符来调用 即产生新的对象时调用 当创建一个新的对象时 系统会自动调用该类的构造函数 如果没有创建构造函数 系统会产生一个默认的构造方法 不带参数而且方法体为空 构造函数举例 一 usingSystem classMyClass Myclass Console WriteLine 我的构造函数 publicstaticvoidMain MyClasscM newMyClass new运算符创建类的一个实例 如果没有MyClass方法 则系统产生一个默认构造函数如下 MyClass 构造函数举例 二 usingSystem classuserName stringuname publicuserName stringname uname name publicvoidShowName Console WriteLine name publicstaticvoidMain userNameun1 newuserName tony un1 ShowName new运算符创建类的一个实例 并给出参数tony 定义构造方法 将参数赋值给域变量uname 2 析构函数 创建实例时 系统会为实例分配空间 当实例用完以后 就要回收这些分配出去的空间 所以释放对象时要用析构函数 析构方法是用符号 开始的并与类同名的方法 该方法不带参数 没有返回类型也不带修饰符 一个类的析构方法最多只有一个 如果没有提供析构方法 系统会自动生成一个 析构方法不能由程序显式调用 而由系统自动进行 在 net中 不必太关注内存管理 因为 net框架垃圾回收器会自动地管理对象的内存分配和释放 析构函数举例 usingSystem classFirst First Console WriteLine constructorofFirst First Console WriteLine destructorofFirst publicstaticvoidMain Firstob newFirst 程序运行结果为 constructorofFirstdestructorofFirst 4 1 3对象的创建与使用 对象首先要进行声明 类名变量名 创建对象的一般格式如下 变量名 new构造方法 参数 声明和创建可以合写成一句 类名变量名 new构造方法 参数 如 Personp1 newPerson Jenny new是新建对象的运算符 开辟空间并执行相应的构造方法 返回该对象的一个引用 对象实体所在的内存地址 name age p1 对象创建举例 定义一个Student类 该类由三个域年龄 姓名和性别 为该类编写构造函数 参数为三个 int string string 在主方法中创建一个实例s1 对域进行初始化并输出三个域的值 usingSystem classStudent intage stringname stringsex publicStudent inta stringna strings age a name na sex s classApp publicstaitcvoidMain Students1 newStudent 23 zhanghua female Console WriteLine 0 1 2 s1 age s1 name s1 sex 4 1 4类的静态成员 类可以有两类成员 静态成员和实例成员 实例成员会被类的每个实例复制 而静态成员只会被复制一次并在整个应用程序的生命周期内都存在 默认情况下 成员被定义为实例成员 如加上static关键字则被定义为静态成员 Main 主方法一定是静态的 usingSystem classMyclass publicMyclass number staticpublicintnumber 1 classApp publicstaticvoidMain Console WriteLine Myclass number Myclassm1 newMyclass Console WriteLine Myclass number Myclassm2 newMyclass Console WriteLine Myclass number 程序运行结果为123 如果不是静态成员 只能用m1 number或m2 number 而不能直接用Myclass number 静态成员和实例成员比较 程序区数据区静态数据区Myclass number 1动态数据区m1m2 程序区数据区静态数据区动态数据区m1 numberm2 number 4 2类的方法 4 2 1方法的定义和调用4 2 2方法的重载4 2 3ref和out参数 4 2 1方法的定义和调用 方法表示类的动态行为 即类所具有的功能和操作 C 的方法是完成某种操作的程序片断 由方法头和方法体组成 修饰符返回值类型方法名 形式参数列表 方法体各语句 如果方法有返回值 则方法体中有return语句 publicvoidSayHello System Console WriteLine Hello 方法的定义和调用举例1 定义一个方法 输出对象成员的值 usingSystem classStudent intage stringname stringsex publicStudent inta stringna strings age a name na sex s publicvoidShow Console WriteLine 0 1 2 this age this name this sex classApp publicstaitcvoidMain Students1 newStudent 23 zhanghua female s1 Show 方法的定义和调用举例2 为Student类添加一个成绩域 并添加pass方法对及格与否进行判断 usingSystem classStudent intage stringname stringsex publicintscore publicStudent inta stringna strings age a name na sex s publicboolpassornot if score 60 return true elsereturn false classApp publicstaitcvoidMain Students1 newStudent 23 zhanghua female s1 score 78 boolps s1 passornot if ps Console WriteLine pass elseConsole WriteLine notpass 4 2 2方法的重载 重载的意思是可以多次使用一个方法 但是每次给它的参数值都不同 或者说方法含义相同但参数不同 重载是实现多态性的一种方式 usingSystem classMyclass publicvoidWriteItem inti Console WriteLine integer publicvoidWriteItem floati Console WriteItem float publicstaticvoidMain WriteItem 1 WriteItem 2 5 对构造函数进行重载 usingSystem classStudent intage stringname stringsex publicStudent inta stringna strings age a name na sex s publicStudent inta stringna age a name na classApp publicstaitcvoidMain Students1 newStudent 23 zhanghua female Students2 newStudent 23 zhanghua Console WriteLine 0 1 2 s1 age s1 name s1 sex Console WriteLine 0 1 2 s2 age s2 name 4 2 3ref和out参数 在方法中可以由返回值 但是往往只能返回一个值 如果想返回多个值 只能多次使用方法 如 intnum1 A GetNumber intnum2 A GetNumber intnum3 A GetNumber 希望能用一个方法返回多个值 即intnum1 num2 num3 A GetNumber num1 num2 num3 但是参数的值传递方式使得方法对参数所做的改变不能保留 classMyclass GetNumber num1 num2 num3 num1 num1 num1 publicstaticvoidMain intnum1 1 num2 2 num3 3 MyclassA newMyclass A GetNumber num1 num2 num3 Console WriteLine 0 1 2 num1 num2 num3 实参传递值给形式参数 但是形式参数是另外的存储单元 形式参数的改变不会反映在实际参数上 使用ref参数控制在调用方法时 方法对参数做的更改都反映在该变量中 达到返回多个值的目的 classMyclass publicstaticvoidtestref refchari i b publicstaticvoidtestnoref chari i c publicstaticvoidMain chari a testref refi Console WriteLine i testnoref i Console WriteLine i 程序运行结果为bb带ref的参数i保留了在方法中所做的改变 i a i b i c 使用ref参数时 必须对参数进行初始化 out参数可以让我们不对传递的参数进行初始化 classMyclass publicstaticvoidtestout outchari i b publicstaticvoidMain chari testout outi Console WriteLine i
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!