




已阅读5页,还剩26页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第五章类的继承和派生 Inheritance extends derive 本章知识点 继承概念和作用子类的声明类成员修饰符与继承的关系理解父类和子类的关系 在子类中使用父类成员 方法 继承机制下 对象创建的过程 构造方法的使用 super调用 子类对父类方法的重写 super调用 5 1继承的概念和软件的重用性 继承 从已有的类中派生出新的类 新的类能吸收已有类的数据属性和行为 并能扩展新的能力 父类是子类的一般化 子类是父类的特例化 具体化 父类也称为超类或基类 parents super base child derived 类之间的关系 is a 关系 类之间是继承的关系 has a 关系 类之间是组合的关系 前4 9节 5 1继承的概念和软件的重用性 5 1继承的概念和软件的重用性 继承分类单继承 一个子类最多只能有一个父类 多继承 一个子类可有两个以上的父类 说明 Java类只支持单继承 而接口支持多继承 Java多继承的功能则是通过接口方式来间接实现的 继承使软件的代码得到重用 提高了系统的效率 在继承关系中 子类通过吸收父类的数据 属性 和方法 行为 并增加新功能或修改已有功能来创建新类 5 1继承的概念和软件的重用性 Object类 Java中所有类的父类 定义和实现了Java系统下所有类的共同行为 所有的类都是由这个类继承 扩充而来的 认识Object类中的方法 5 2子类的定义 子类定义的一般格式 类修饰符 class子类名extends父类名 成员变量定义 成员方法定义 在子类的定义中 用关键字extends来明确指出它所继承的父类 例5 1 通过继承来定义子类 packagechap5 example5 1 publicclassAutomobile privateStringnumber publicvoidsetNumber Stringnumber this number number voidshowNumber System out println 车牌号 number 例5 1 通过继承来定义子类 packagechap5 example5 1 publicclassTruckextendsAutomobile privatedoublecapacity publicvoidsetCapacity doublecapacity this capacity capacity publicvoidshowCapacity System out println 卡车载货容量 capacity 吨 例5 1 通过继承来定义子类 packagechap5 example5 1 publicclassTruckTest publicstaticvoidmain String args Trucktc newTruck tc setNumber 京E88888 tc setCapacity 10 tc showNumber tc showCapacity 子类使用从父类中继承的方法 子类使用从父类中继承的方法 5 3作用域与继承 成员访问控制修饰符在继承中的性质public private package protected父类的public成员可以在父类中使用 也可以在子类使用 程序可以在任何地方访问public父类成员 父类的private成员仅在父类中使用 在子类中不能被访问 父类的protected成员可在子类被访问 无论子类与父类是否存储在同一个包下 父类的package成员可在同一包的子类中被访问 5 3作用域和继承 成员访问控制修饰符的具体应用父类中属性的修饰符 子类应依赖于父类的服务 而不应依赖于父类的数据 所以 应该将父类中的成员变量声明为private 并在父类中定义访问这些private成员变量的public型的方法 public protected和package较少修饰属性 父类中方法的修饰符 关于父类中的private方法 如果某个方法是为类中其他的方法提供服务 只在类中使用 将其定义为private 对外界隐藏 5 3作用域和继承 子类从父类继承成员时 父类的所有public protected package成员 在子类中都保持它们原有的访问修饰符 例如 父类的public成员成为子类的public成员 父类的protected成员也会成为子类的protected成员 子类只能通过父类所提供的非private方法来访问父类的private成员 5 4继承下的构造方法 继承下的构造方法的调用次序子类构造方法在执行自己的任务之前 将显式地 通过super引用 或隐式地 调用父类默认的无参数构造方法 调用其直接父类的构造方法 类似地 如果父类派生于另一个类 则要求父类的构造方法调用上一级类的构造方法 依此类推 调用请求中 最先调用的一定是Object类的构造方法 创建对象的过程 先父后子 例5 2 1 构造方法的隐式调用过程 packagechap5 example5 2 1 publicclassShape privateStringname publicShape System out println Shape的无参构造方法 Shape packagechap5 example5 2 1 publicclassCircleextendsShape privatedoubler publicCircle doubler this r r System out println Circle的带参构造方法 Circle double packagechap5 example5 2 1 publicclassTest publicstaticvoidmain String args Circlecircle newCircle 1 为了避免错误 父类中至少定义一个无参的构造方法 例5 2 2 构造方法的显式调用过程 packagechap5 example5 2 2 publicclassShape privateStringname publicShape System out println Shape的无参构造方法 Shape publicShape Stringname super 调用Object的构造方法this name name System out println Shape构造方法 Shape String publicStringgetName returnname 例5 2 2 构造方法的显式调用过程 packagechap5 example5 2 2 publicclassCircleextendsShape privatedoubler publicCircle Stringname doubler super name 显式调用父类的构造方法this r r System out println Circle的带参构造方法 Circle String double publicvoidshow System out println 我是 getName 半径 r 调用了父类方法 packagechap5 example5 2 2 publicclassTest publicstaticvoidmain String args Circlecircle newCircle 小圆 1 circle show 5 5方法的重新定义 overriding 方法的重写 如果在子类中某个方法与父类的某个方法有相同方法署名 方法头 则称子类重写 overriding 了父类的该方法 效果 子类对象调用这个方法时 将使用子类中定义的方法 对它而言父类中定义的方法已经 看不见 了 例5 3 方法的重写 例5 3 1 方法的重写 packagechap5 example5 3 1 publicclassShape privateStringname publicShape publicShape Stringname super this name name publicStringgetName returnname publicvoidsetName Stringname this name name publicvoidshow System out println 我是一个 name 父类类中的show方法 例5 3 1 方法的重写 packagechap5 example5 3 1 publicclassCircleextendsShape privatedoubler publicCircle Stringname doubler super name this r r publicvoidshow System out println 半径为 r 重写了父类中的show方法 packagechap5 example5 3 1 publicclassTest publicstaticvoidmain String args Circlecircle newCircle 圆 1 circle show 半径为1 0 例5 3 2 方法的重写 调用父类同名方法 packagechap5 example5 3 1 publicclassShape privateStringname publicShape publicShape Stringname super this name name publicStringgetName returnname publicvoidsetName Stringname this name name publicvoidshow System out println 我是一个 name 父类中的show方法 例5 3 2 方法的重写 调用父类同名方法 packagechap5 example5 3 1 publicclassCircleextendsShape privatedoubler publicCircle Stringname doubler super name this r r publicvoidshow super show System out println 半径为 r 调用父类中的show方法 packagechap5 example5 3 1 publicclassTest publicstaticvoidmain String args Circlecircle newCircle 小圆 1 circle show 我是一个小圆半径 1 0 重写Object类的toString 方法 Object类 java中所有类的父类 toString 方法 是Object的一个公有方法 返回一个String类型的数据代表该对象 默认取值为 类的名称 该类对象hash码的十六进制表示例如 Shapeshape newShape System out println shape 系统默认调用该对象的toString方法实现输出 重写Object类的toString 方法 例5 4 在Shape类中重写Object类的toString 方法 实现字符串形式的输出 packagechap5 example5 4 publicclassShape privateStringname publicShape publicShape Stringname this name name publicStringtoString return 我是一个 name n packagechap5 example5 4 publicclassShapeTest publicstaticvoidmain String args Shapeshape newShape 图形 System out println shape 本章小结 继承的作用 在原有类的基础上派生出子类 提高开发效率 定义子类时 用关键字extends指出它所继承的父类 子类可以使用父类中被声明为public protected package 子类与父类在相同包下 的成员 父类的属性应设置为private修饰符 并为它们提供public的set和get方法 如果某个方法是为类中其他的方法提供服务 只在类中使用 将其定义为private 对外界隐藏 本章小结 父类的构造方法不能够被继承 但当调用子类的构造方法时 系统首先要隐式或显式地调用父类的构造方法 即先构建父类对象再构建子类对象 为了避免错误 父类中至少要定义一个无参的构造方法 显式调用父类构造方法的方式为 super 参数 在子类中可以重写父类中的方法 使该方法的执行更符合子类的情况 在子类中使用父类已被重写的方法的方式为 super 父类同名方法 参数 考核目标 掌握 子类的声明类成员修饰符与继承的关系在子类中使用父类成员 方法 继承机制下 对象创建的过程 构造方法的使用 super调用 子类对父类方法的重写 super调用 理解 继承概念和作用理
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年水稻苗买卖协议书
- (2025年标准)管理咨询转让协议书
- 2025年新微粒贷服务协议书
- 2025年新内部职员配股协议书
- 国际价格谈判协议
- 2025四川成都市第七人民医院第二批次编外招聘工作人员52人笔试参考题库附答案解析
- 2025海南省眼科医院(中山大学中山眼科中心海南眼科医院)招聘事业编制人员27人(第1号)笔试模拟试题及答案解析
- 成都市大邑县2025年下半年公开考核招聘急需紧缺教育人才岗位调整考试参考题库附答案解析
- 2025福建人才教育科技发展有限公司招聘6人考试备考题库及答案解析
- 供暖系统技术支持协议
- 《华为团队工作法》读书笔记PPT模板思维导图下载
- 《Premiere影视剪辑》课件-概述篇
- 2022年上海市法院系统辅助文员招聘128人笔试备考题库及答案解析
- 全过程工程咨询服务技术方案
- GB/T 4802.1-2008纺织品织物起毛起球性能的测定第1部分:圆轨迹法
- GB/T 35568-2017中国荷斯坦牛体型鉴定技术规程
- GB/T 28707-2012碟簧支吊架
- GB/T 2791-1995胶粘剂T剥离强度试验方法挠性材料对挠性材料
- GB/T 25702-2010复摆颚式破碎机颚板磨耗
- 超分子化学简介课件
- 流体力学-流体力学基本方程课件
评论
0/150
提交评论