




已阅读5页,还剩32页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1 本单元教学内容 使用继承改善系统类的结构类成员的继承规则子类构造器子类对父类方法的重写 2 汽车管理系统 系统是一个用于管理小轿车 客车等各类汽车资源的系统 功能主要包括 维护 存储各类车的基本信息 提供汽车信息列表输出等功能 分析 针对系统要求 应设计哪些核心类 3 汽车管理系统核心类 1 用于描述各种类型车信息的车类 如Car类 Bus类 2 用于保存所有汽车基本信息的数据类 分析 1 Car类与Bus类各有什么成员属性和方法 比较Car类与Bus类 发现什么异同 如果还需要其它车类 怎么做 4 VehicleData类 用于保存维护所有汽车基本信息 分析VehicleData类问题 1 如何保存各类车信息 2 分析相关的add方法和list方法 比较异同 5 ArrayList类的使用 ArrayList类封装了一个Object类型的数组 我们可以使用它来维护一个Object的可变长数组 ArrayList对象的创建publicArrayList 默认的构造器 将会以默认大小 16 来初始化内部的数组 publicArrayList intinitialCapacity 用指定的大小来初始化内部的数组 publicArrayList Collectionc 用一个已有集合对象来构造数组 并将该集合的元素添加到ArrayList的数组中 6 ArrayList类的使用 ArrayList类的部分常用方法add Objecto 在对象列表结构的最后添加对象元素 add intindex Objectelement 在对象列表指定位置插入新的对象元素 remove Objecto 从对象列表中移走对象 clear 清空列表中的所有对象元素 iterator 返回用于遍历对象集合的指针 7 Java的循环控制结构 Java的循环语句共有三种 它们是 while循环语句for循环语句do while循环语句 循环结构由四个部分组成 初始化部分 initialization 一条或多条语句 用来做一些初始化的工作 循环条件部分 loop condition 一个boolean型的表达式 根据它的值来判断是否继续下一次循环 循环体部分 body 将被反复执行的代码 可以是一条语句 也可以是一个语句块 复合语句 迭代部分 iteration 在一次循环结束后 下一次循环开始前执行的语句 通常用于修改循环条件 8 Java的循环控制结构 while和for循环语句对应当型结构 do while语句对应直到型结构 当型循环结构直到型循环结构 9 While循环 while的语法格式如下 initialization while loop condition body iteration 试一试 请分析下面程序段的功能 绘制其流程图 并加以解释 intcount 1 定义并初始化循环变量Iintsum 0 定义并初始化求和结果变量sumwhile count 100 循环求和sum count 循环体count System out println 1 2 100 sum 输出结果 10 for循环 for循环语句是当型结构 在几种循环语句的使用中最为灵活 其语法格式如下 for initialization loop condition iteration body 试一试 编写使用for循环语句实现计算1到100的和的程序段 11 do while循环语句 do while循环语句是直到型结构 它的语法格式如下 initialization do body iteration while loop condition 试一试 编写使用do while循环语句实现计算1到100的和的程序段 12 改善系统类结构 如何有效减少Car类和Bus类代码的重复 观察下图 基本思路 将Car类与Bus类的共性抽象出来 上移到Vehicle类中 以Vehicle类为基础 构建Car类和Bus类 13 相关概念 类的继承描述的是类与类之间的 isa 关系 即子类是比父类更为特殊的类 是父类的一种特例 继承机制的优点在于为我们提供了一种类级的代码重用机制 使我们可以在现有类的基础上 通过重用 修改或添加等方法创建一个新类 父类 或基类 超类 子类 或派生类 14 继承的Java实现 编写例3 3程序在Java中使用关键字extends实现继承 其基本语法格式为 classSubClassNameextendsSupClassName 需要讨论二个问题 1 子类中有什么 类成员的继承规则是怎样的 2 在继承结构中 构造器是如何处理的 如何写子类构造器方法 15 类成员的继承规则 分析讨论private成员的继承性 分析讨论public成员的继承性 问题 如果父类的public方法是用来操作父类的私有变量呢 分析讨论无访问控制符修饰的成员的继承性 protected访问修饰符的使用protected是专为继承而设计的访问控制修饰符 16 成员属性与成员方法的继承规则 17 Java成员继承规则 试一试 编写Bus类的测试程序 参见P79 P80分析 Bus类中有哪些成员变量与成员方法 如果调用从父类继承下来的公有方法 举例说明 18 子类构造器 重新思考 构造器的形式要求 构造器的作用 观察分析 Bus类与Car类构造器方法理解子类构造器在内存机制中 子类对象的属性包含从父类继承下来的属性和自己新增的属性 因此 构建对象时 也要先构建父类的数据部分 再考虑子类增加的部分 19 子类构造器 子类构造器的一般形式子类类名 构造器参数列表 super 与父类构造器方法参数相对的实参 调用父类构造器 对子类成员的初始化 20 实战演练 1 编写一个矩形类Rect 该类包含 两个私有属性 矩形的长length和宽width 一个构造器方法 带2个参数的构造器方法 用于对length和width属性进行初始化 两个公有成员方法 分别用于计算并返回矩形的面积和周长 21 实战演练 2 编写一个具有确定位置的矩形类PlainRect 该类继承于Rect类 其确定位置用矩形的左上角坐标来标识 为该类添加 两个属性 矩形左上角坐标startX和startY 两个构造器方法 1 带4个参数的构造器方法 用于对startX startY width和height属性初始化 2 不带参数的构造器方法 将矩形初始化为左上角坐标 长和宽都为0的矩形 一个方法 方法isInside doublex doubley 用于判断某个点是否在矩形内部 如在矩形内 返回true 否则 返回false 22 实战演练 3 编写上题PlainRect类的测试程序 1 创建一个左上角坐标为 10 10 长为20 宽为10的矩形对象 2 计算并打印输出矩形的面积和周长 3 判断点 25 5 13 是否在矩形内 并打印输出相关信息 23 方法覆盖 重写 当从父类继承下来的方法不能完全满足子类需要时 我们可以重写该方法 如 Bus中从Vehicle类中继承下来的方法printInfo 不能输出车的座位数 修改Bus如下 classBusextendsVehicle privateintnumOfSeat publicBus Stringtype Stringbrand doubleprice intnumOfSeat super type brand price this numOfSeat numOfSeat publicvoidprintInfo 重写父类中的printInfo 方法super printInfo 调用父类中的该方法System out println 座位数 numOfSeat 24 方法覆盖 重写 重新运行Bus类的测试程序P79 P80方法覆盖与方法重载的区别 方法重载要求 方法名相同 参数数目或参数类型不同 方法覆盖要求 子类的方法定义应与父类保持一致 即应与父类有完全相同的方法名 返回值类型和参数列表 否则就不是方法的覆盖 而是在子类中定义了自己的与父类无关的成员方法 此外 方法的覆盖还应遵循以下规则 覆盖方法的访问控制应该与它所覆盖的方法的访问控制相同或更宽松 覆盖方法不能比它所覆盖的方法抛出更多的异常 25 试一试 对于以下的类BaseClass和子类SubclassclassBaseClass privatefloatx 1 0f protectedfloatgetVar returnx classSubclassextendsBaseClass privatefloatx 2 0f 方法插入处 以下哪些方法是方法getVar 的重写方法 A floatgetVar returnx B publicfloatgetVar returnx C floatdoublegetVar returnx D protectedfloatgetVar returnx E publicfloatgetVar floatf returnf 26 试一试 14 对于以下给定的类 publicclassMethodOver publicvoidsetVar inta intb floatc 下面哪些方法是方法setVar inta intb floatc 的重载方法 A privatevoidsetVar inta floatc intb B protectedvoidsetVar inta intb floatc C publicintsetVar inta floatc intb returna D publicintsetVar inta intb floatc returna E protectedfloatsetVar inta intb floatc returnc 27 变量的隐藏 classSuperClass privateintvalue 10 publicvoidprintValue System out println value value classDeriveClassextendsSuperClass privateintvalue 20 28 实战演练 1 编写Employee类 该类包含 四个受保护属性 雇员的姓名name 工号number 住址address和薪水salary 一个构造器方法 用于初始化name number和salary属性 两个公有成员方法 分别实现职员基本信息的输出和按比例涨工资的功能 29 实战演练 2 编写Manager类 该类继承于Employee类 1 为其添加 两个属性 办公室officeID和年终分红bonus 一个构造器方法 带有4个参数的构造器方法 用于对除bonus属性外的所有其它属性进行初始化 方法 officeID属性和bonus属性的相关set和get方法 2 重写Employee类中的方法raiseSalary doubleproportion 经理涨工资的计算方法为在雇员工资涨幅的基础上增加10 的比例 30 实战演练 3 编写TemporaryEmployee 临时工 类 该类继承于Employee类 1 为其添加 一个属性 雇佣年限hireYears 构造器方法 用于初始化该类的所有属性 方法 hireYears属性的set和get方法 2 重写Employee类中的方法raiseSalary doubleproportion 临时工的工资涨幅为正式雇员的50 31 添加新的子类 在车的继承结构中添加Truck类 为该类添加一个吨位数属性 重写printInfo 方法 32 几个其它继承的实例 1 讨论 图所表示的关系2 轮船 客轮的关系示例 共性与个性 3 列举其它的类似关系 33 Java的单继承结构 每个类最多只能有一个父类 只支持单继承 Object类是Java的终极超类 所有类都
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 海水养殖环保监测设备创新创业项目商业计划书
- 聚四氢呋喃装置操作工设备调试考核试卷及答案
- 煮茧操作工主管竞选考核试卷及答案
- 公共用电安全培训
- 甲乙酮装置操作工技能巩固考核试卷及答案
- 大学英语四六级综合模拟试题集
- 志愿者防火教育效果评估分析报告
- 水产养殖生物多样性保护政策执行分析报告
- 摄像头维修培训课程设计分析报告
- 锅炉卷板工岗位操作规程考核试卷及答案
- 001 比较思想政治教育(第二版) 第一章
- GB/T 9728-2007化学试剂硫酸盐测定通用方法
- GB/T 2992.1-2011耐火砖形状尺寸第1部分:通用砖
- 神经系统的分级调节课件 【知识精讲+备课精研+高效课堂】 高二上学期生物人教版选择性必修1
- 中医门诊消毒隔离制度
- 三年级上册数学试卷-第一单元 混合运算 北师大版 (含答案)
- 教学课件-英语学术论文写作(第二版)
- 实习证明模板(两种格式)
- ISO 31000-2018 风险管理标准-中文版
- 职能部门督导检查记录表
- 滨海县生活垃圾填埋场改建工程环评报告书
评论
0/150
提交评论