已阅读5页,还剩19页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第四章面向对象编程 本章主要内容 4 1简介4 2面向对象的基本概念4 3面向对象的基本语法4 4类和包4 5类的方法4 6对象4 7继承和多态4 8接口和抽象类4 9面向对象开发概念 定义类的方法的步骤是什么 类中的一个方法如何调用类的另一个方法 类中的一个方法如何调用另一个类的方法 分别说明成员变量和局部变量的作用域 如何给类的方法添加JavaDoc注释 课程回顾 本章目标 掌握继承掌握super关键字掌握多态 4 6继承和多态 计算机语言设计犹如在公园里漫步 我是说侏罗纪公园 LarryWall Perl语言之父 生活中的继承 生活中 继承的例子随处可见 动物 食草动物 食肉动物 谁是父类 谁是子类 能说出继承的特点吗 继承需要符合的关系 is a 父类更通用 子类更具体 生活中的继承 子类具有父类的一般特性 包括属性和行为 以及自身特殊的特性 巴士是汽车吗 卡车是汽车吗 出租车是汽车吗 汽车 请问 出租车包含哪些属性和行为呢 4 6 1类和类的继承 类的设计其实是对现有世界的模仿在继承中 一般常见的有属性继承 属性隐藏 方法继承 方法覆盖 方法重载等技术 在Java语言中 用extends关键字来表示一个类继承了另一个类在父类中只定义一些通用的属性与方法子类自动继承父类的属性和方法 子类中可以定义特定的属性和方法子类的构造方法中 通过super关键字调用父类的构造方法方法重写后 通过super关键字调用父类的方法在Java中 所有的Java类都直接或间接地继承了java lang Object类 如何实现继承3 1 在Java语言中 用extends关键字来表示一个类继承了另一个类 例如 publicclassWomanextendsHuman 其余代码省略 在父类中只定义一些通用的属性与方法 例如 publicclassHuman privateStringname privateStringschool publicHuman Stringname Stringsex intage 初始化属性值 publicvoidcanEat publicvoidbreath 如何实现继承3 2 子类自动继承父类的属性和方法 子类中可以定义特定的属性和方法 publicclassHuman privateStringname 教员姓名privateStringsex 所在中心publicHuman StringmyName StringmySex 初始化属性值 publicvoidsayHello 方法的具体实现 publicclassFatherextendsHuman publicFather StringmyName StringmySex super myName mySex publicvoidsayHello System out println 你好 我是爸爸 super sayHello 由于sayHello 方法与父类的实现有所不同 因此重写了该方法 方法重写 子类和父类的方法具有相同的名称 参数列表 返回类型 父类中的属性和方法可以被子类继承 publicclassFatherextendsHuman publicFather StringmyName StringmySex super myName mySex 如何实现继承3 3 子类的构造方法中 通过super关键字调用父类的构造方法 方法重写后 通过super关键字调用父类的方法 publicclassFatherextendsHuman publicvoidsayHello System out println 你好 我是爸爸 super sayHello 通过调用父类的构造方法 完成对属性值的初始化 一切类的 祖先 Object 在Java中 所有的Java类都直接或间接地继承了java lang Object类 publicclassMyObject publicclassMyObectextendsObject 在Eclipse中调用MyObject对象的成员 会自动弹出继承自Object的所有方法 4 6 1类和类的继承 函数的覆盖和重载的区别 4 6 1类和类的继承 重载的情况下 子类的访问权限比父类要大 参看课本例4 15Man类 用于测试Man类的程序 为什么需要多态5 1 在Woman Man类的基础上 开发一个类用来判断 负责对Woman Man中的方法进行判断 1 打招呼 为什么需要多态5 2 第一种解决方案 publicclassJudge publicvoidjudge Manman man sayHello man isFather publicvoidjudge Womanwoman woman sayHello woman isMother publicstaticvoidmain String args Manlisi newMan 李四 男 Womanlili newWoman 李丽 女 Judgejudge newJudge judge judge lisi judge judge lili 我继承于Human类 是个男性大家好 我是李四 是个男人我继承于Human类 是个女性大家好 我是李丽 是个女人 控制台输出 为什么需要多态5 3 现在 升级人类 增加一种新类型 Boy同时 Judge也负责对这类进行评估 为什么需要多态5 4 如果在第一种解决方案的基础上去解决 我们需要如下两个步骤 建立Boy类修改Judge类 增加方法 judge Boyboy 每增加一种新的人类型 都要修Judge类 增加相应的judge 评估 方法 代码的可扩展性及可维护性极差 能找到这个解决方案的弊端吗 为什么需要多态5 5 第二种解决方案 使用多态 publicclassJudgeAll publicvoidjudge Humanhuman human sayHello publicstaticvoidmain String args JudgeAlljudgeall newJudgeAll judgeall judge lisi judgeall judge lili judgeall judge xiaoming 可以接收子类类型 根据实际创建的对象类型调用相应方法 我继承于Human类 是个男性大家好 我是李四 是个男人我继承于Human类 是个女性大家好 我是李丽 是个女人我继承于Human类 是个男孩 还没有成年 控制台输出 使用多态之后 当需要增加新的子类类型时 无需更改Judge类 程序的可扩展性及可维护性增强 什么是多态 简单来说 多态是具有表现多种形态的能力的特征同一个实现接口 使用不同的实例而执行不同操作 彩色打印机 打印机 黑白打印机 打印效果 彩色 打印效果 黑白 打印 打印 publicclassHuman publicvoidsayHello System out println 大家好 我是 name 是个 sex 人 如何实现多态 1 子类重写父类的方法2 编写方法时 使用父类定义的方法3 运行时 根据实际创建的对象类型动态决定使用哪个方法 总结2 1 给定如下Java代码 编译运行后 输出结果是什么 classBase publicStringname publicBase name Base publicBase StringpName name pName publicvoidmethod System out println name classChildextendsBase publicChild super Child1 name Child2 publicclassSample publicstaticvoidmain String args Childc newChild c method Child2 控制台输出 1 2 3 总结2 2 给定如下Java代码 编译运行后 输出结果是什么 publicclassHuman publicvoidsayHello System out println 你好 我是人类 publicclassBoyextendsHuman publicvoidsayHello System out println 你好 我是男孩 1 2 publicclassTest publicstaticvoidmain String args Humant newBoy t sayHello 控制台输出 你好 我是男孩 4 6 2类的运行时多态 当不同的对象接受到相同的消息名 或者说当不同的对象调用相同的名称的成员函数 时 可能引起不同的行为 执行不同的的代码
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年6岁儿童保健服务项目培训试题附答案
- 2025年社区银发助浴服务商业模式创新报告
- 酒店员工培训制度
- 2026年服装行业创新报告及3D打印技术应用创新报告
- 2026年智能洗衣房市场潜力分析报告
- 高中政治教师教学画像构建:数字化视角下的教学创新与实践教学研究课题报告
- 基于云计算的企业内数据备份与恢复服务解决方案
- 线绳悬浮支撑施工方案(3篇)
- 发热病人应急预案(3篇)
- 营销专员薪酬方案(3篇)
- 供应商货款打折完整协议书
- GB/T 45007-2024职业健康安全管理体系小型组织实施GB/T 45001-2020指南
- 【小班幼儿园入园分离焦虑调研探析报告(附问卷)10000字(论文)】
- 道路养护安全培训
- 小学道法二 我自豪 我是中国人课件
- 外源化学物致突变作用-优秀课件
- 董碧玉ppt-数字式胸腔引流系统
- 同济大学高等数学(第七版)下册第10章重积分课后习题答案
- CN2网络概况及MPLS-VPN简介
- 物探-地震勘探理论基础
- 蒋丁新版饭店管理第七章-饭店营销管理
评论
0/150
提交评论