已阅读5页,还剩36页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第3章面向对象的核心特性 3 1类和对象3 2类的封装性3 3类的继承性3 4类的多态性3 5抽象类和最终类3 6递归方法 3 1类和对象 3 1 1面向对象基本概念3 1 2定义类3 1 3使用对象 3 1 1面向对象基本概念 类与对象类 class 是既包括数据又包括作用于数据的一组操作的封装体 对象 object 是类的实例 instance 类的封装性 继承性和多态性类的封装性类的继承性类的多态性 3 1 2定义类 声明类类声明 成员变量的声明 成员方法的声明及实现 声明成员变量 修饰符 class类 extends父类 implements接口列表 publicclassDate1 类声明 intyear month day 声明成员变量 3 1 2定义类 声明成员方法方法声明语法 修饰符 返回值类型方法 参数列表 throws异常类 语句序列 return 返回值 方法体中的局部变量方法体中用return语句返回值声明main方法publicstaticvoidmain Stringargs 例3 1 声明日期类 3 1 3使用对象 声明对象类对象对象实例化对象 new类的构造方法 参数列表 Date1aday newDate1 引用对象的成员变量和调用对象方法对象 成员变量对象 成员方法 参数列表 aday year 2006 引用对象的成员变量aday setDate 2006 1 28 调用对象的方法 abcd equals abc 3 1 3使用对象 对象的引用模型 3 1 3使用对象 方法调用时的参数传递原则基本数据类型参数传递值 引用数据类型参数传递引用 释放对象Java语言具有资源回收机制 能够跟踪存储单元的使用情况 自动收回不再被使用的资源 例3 2 引用数据类型作为方法的参数和返回值 3 2类的封装性 3 2 1构造方法与析构方法3 2 2方法的重载3 2 3this引用和instanceof对象运算符3 2 4类及其成员的访问权限3 2 5实例成员与类成员 3 2 1构造方法与析构方法 构造方法声明构造方法publicclassDate2 publicDate2 inty intm intd 声明构造方法 构造方法与类同名 构造方法返回该类的一个实例year y month m day d Date2aday newDate2 2006 1 28 关于构造方法声明和使用的几点说明构造方法与成员方法的不同之处 2 析构方法 publicvoidfinalize 析构方法 语句序列 3 2 2方法的重载 重载的含义Math abs 方法声明有4种 intabs inta longabs longa floatabs floata doubleabs doublea 成员方法重载构造方法重载Date2aday1 newDate2 Date2aday2 newDate2 2006 2 28 图3 2使用拷贝构造方法复制对象 Date2aday3 newDate2 aday2 由已知对象创建新对象 3 2 3this引用和instanceof对象运算符 this引用指代对象本身this访问本类的成员变量和成员方法this 成员变量this 成员方法 参数列表 调用本类重载的构造方法this 参数列表 instanceof对象运算符adayinstanceofDate2 3 2 4类及其成员的访问权限 类中成员的访问权限类的访问权限 只有public和缺省两种 publicclassDate1 公有的类classDate1 ex 默认的类 例3 3 日期类的封装 设计并重载构造方法成员变量设计为私有的访问权限 限制其他类对成员变量的访问成员方法设计为公有的访问权限 提供给其他类使用使用this引用增强程序的可维护性运行包含main 方法的类日期类的设计问题讨论 3 2 5实例成员与类成员 实例成员变量与类成员变量两者声明时的差别publicclassPerson1 Stringname 姓名 实例成员变量intage 年龄staticintcount 人数 类成员变量 两者存储结构的差别两者引用方式的差别 图3 4实例成员变量与类成员变量的存储结构不同 2 实例成员方法与类成员方法 两者声明时的差别publicstaticinthowMany 类成员方法 returncount 类成员方法只能访问类成员变量 publicstaticvoidmain Stringargs main方法也是类成员方法两者方法体中语句的差别在类成员方法体中 不能使用this引用 两者调用方式的差别Person1 howMany 通过类名调用类成员方法p1 howMany 通过对象调用类成员方法 例3 4 实例成员与类成员 类成员的作用和调用set方法可以重载 get方法不能重载方法体中的局部变量不能使用修饰符调用对象的析构方法后 不能再引用对象 3 3类的继承性 3 3 1什么是继承3 3 2定义继承的类3 3 3super引用 3 3 1什么是继承 继承的概念由一个已有的类定义一个新类 称为新类继承已有的类 继承的作用继承原则子类继承父类的成员变量 包括实例成员变量和类成员变量 子类继承父类除构造方法以外的成员方法 包括实例成员方法和类成员方法 子类不能继承父类的构造方法 因为父类构造方法创建的是父类对象 子类必须声明自己的构造方法 创建子类自己的对象 子类能够继承父类的析构方法 子类不能删除父类成员 子类可以增加自己的成员变量和成员方法 子类可以重定义父类成员 图3 5类的继承性 3 3 2定义继承的类 声明继承的类 修饰符 class类 extends父类 implements接口列表 publicclassStudent1extendsPerson1 Stringspeciality 专业 3 3 2定义继承的类 Java中的类都是Object的子类publicclassPerson1extendsObject类的赋值相容性子类对象即是父类对象 子类对象对父类成员的访问权限子类对父类的私有成员 private 没有访问权限 子类对父类的公有成员 public 和保护成员 protected 具有访问权限 子类对父类中缺省权限成员的访问分两种情况 对同一包中父类的缺省权限成员具有访问权限 而对不同包中父类的缺省权限成员则没有访问权限 3 3 2定义继承的类 子类重定义从父类继承来的成员子类隐藏父类成员变量子类覆盖父类成员方法子类继承并重载父类成员方法 3 3 3super引用 调用父类的构造方法super 参数列表 引用父类同名成员子类隐藏父类成员变量super 成员变量子类覆盖父类成员方法super 成员方法 参数列表 例3 5 类的继承性 子类继承父类成员子类对象即是父类对象类之间继承关系的设计原则本例存在问题 3 4类的多态性 3 4 1什么是多态3 4 2运行时多态性 3 4 1什么是多态 方法的重载重载 overload 是指同一个类中的多个方法可以同名但参数列表必须不同 方法的覆盖覆盖 override 是指子类声明并实现父类中的同名方法并且参数列表也完全相同 例3 6 子类重定义父类成员 两个类声明的成员 例3 6 子类重定义父类成员 子类隐藏父类成员变量子类覆盖父类成员方法子类继承并重载父类成员方法 3 4 2运行时多态性 编译时多态性Person1p1 newPerson1 李小明 21 对象获得本类的实例 对象与其获得的实例类型一致Student1s1 newStudent2 王大伟 19 p1 print 编译时多态性 执行Person1类的方法s1 print 编译时多态性 执行Student2类覆盖的方法运行时多态性Person1p2 newStudent2 p2获得子类对象 对象与其获得的实例类型不一致p2 print 运行时多态 执行Student2类覆盖的方法 例3 7 运行时多态性的应用 对象数组及计数图3 7对象与对象数组运行时多态性体现System out println pgroup i toString 3 5抽象类和最终类 抽象类声明抽象类与抽象方法publicabstractclassPlaneGraphics1 平面图形类 抽象类 publicabstractdoublearea 计算面积 抽象方法 分号 必不可少 抽象类不能被实例化抽象类与抽象方法的作用抽象方法必须被子类覆盖 图3 8图形抽象类及其子类 例3 8 抽象类与抽象方法 设计抽象的平面图形类PlaneGraphics1设计长方形类Rectangle1 继承平面图形类 设计椭圆类Ellipse1 继承平面图形类 使用平面图形类及其子类抽象方法的必要性 2 最终类 声明最终类publicfinalclassMathextendsObject 数学类 最终类声明最终方法publicclassCircle1extendsGraphics1 publicfinaldoublearea 最终方法 不能被子类覆盖 returnMath PI this radius this radius 3 6递归方法 例3 9 求n f n n f n 1 5 5 4 3 2 1 5 4 0 1或1 1n n n 1 3 6递归方法 例3 10 用递归算法计算Fibonacci序列 0 1 1 2 3
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年井冈山经济技术开发区招聘2人考试笔试参考题库及答案解析
- 2025年12月嘉兴海宁水务集团下属企业公开招聘工作人员3人考试笔试参考题库及答案解析
- 2025山东青岛3家事业单位招聘39人笔试考试备考题库及答案解析
- 2026年景观生态学评价合同
- 2025年陕西国际经贸集团有限公司招聘(31人)考试笔试参考题库及答案解析
- 2025年温州瑞安市国有资产投资集团有限公司下属子公司公开招聘市场化工作人员2人笔试考试备考题库及答案解析
- 2025广西柳州市莲花山保护中心招聘半专业森林防火队员1人 (第二批)笔试考试参考题库及答案解析
- 2026年河北雄安科技产业园开发管理有限公司校园招聘12人笔试考试参考试题及答案解析
- 抖音音乐《造音行动》项目方案
- 基站建筑施工质量安全保障方案
- 2025福建漳州市九龙江集团有限公司招聘32人备考题库附答案详解(考试直接用)
- 汽车制造行业年终述职
- 交通运输公司安全管理工作计划及措施
- GB/T 46621-2025机械式停车设备报废条件
- 西安科技大学高新学院《电气工程专业英语》2024-2025学年第一学期期末试卷
- 2025新疆维吾尔自治区融资担保有限责任公司招聘6人人笔试历年参考题库附带答案详解
- 广东省领航高中联盟2025-2026学年高三上学期12月考试语文试卷
- 股骨间粗隆骨折护理查房
- 【英语】北京市朝阳区2024-2025学年高一下学期期末考试试题(解析版)
- 2025心血管疾病患者血糖波动管理的专家共识课件
- (2026年)生命的拥抱-海姆立克急救法培训课件
评论
0/150
提交评论