- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第八章多态和接口
内容回顾 继承的概念及特点 方法重写的特点 抽象类及抽象方法 多态 为什么使用多态 为什么使用多态 什么是多态 实现多态要素 实现多态的两个要素: 1. 方法重写 2. 使用父类类型 方法重写 类型转换 子类转换为父类:自动转换 假设A类是B类的父类,当我们用子类创建一个对象,而这个对象的引用放到父类的对象中时。 A a; a = new B( ); 或 A a; B b = new B( ); a = b; 称这个父类对象a是子类对象的上转型对象。 例如:“老虎是哺乳动物”,哺乳类是老虎类的父类,但这样说将失掉老虎独有的属性。 类型转换 子类转换为父类细节 上转型对象不能操作子类新增的成员变量和方法。 上转型对象可以操作子类继承或重写的成员变量和方法 如果子类重写了父类的某个方法,上转型对象调用该方法时,是调用的重写方法。 父类转换为子类:强制转换 instanceof运算符 为什么使用接口 接口 如何使用接口 如何使用接口 如何使用接口 接口的定义 找出错误 阅读代码,找出错误 接口表示一种能力 面向接口编程 面向接口编程 接口相关规则 接口相关规则 接口中所有方法都是抽象的。 即使没有显式的将接口中的成员用public标识,也是public访问类型的 接口中变量默认用 public static final标示,所以接口中定义的变量就是全局静态常量。 可以定义一个新接口,用extends去继承一个已有的接口 可以定义一个类,用implements去实现一个接口中所有方法。 可以定义一个抽象类,用implements去实现一个接口中部分方法。 接口 C++支持多重继承,Java支持单重继承 C++多重继承的危险性在于一个类可能继承了同一个方法的不同实现,会导致系统崩溃。 Java中,一个类只能继承一个类,但同时可以实现多个接口,既可以实现多重继承的效果和功能,也避免的多重继承的危险性。 class Student extents Person implements Runner,Flyer {…} 注意:extends 必须位于implements之前 上机练习 1、结合课堂案例,实现喂养宠物功能: 实现喂养宠物功能 不同宠物吃的东西不同 主人可以喂养不同类型宠物 练习功能知识点: 子类到父类的自动类型转换 使用父类作为方法形参实现多态 多态可以减少代码量,可以提高代码的可扩展性和可维护性 上机练习 2. 创建一个EatBehavior接口,该接口提供一个eat()抽象方法: 为该接口提拱两个实现类,中餐和西餐(ChineseMeal和WesternStyleFood) 创建一个Person抽象类,该类中有描述人的姓名和年龄和吃饭(EatBehavior)三个属性,分别可通过get/set方法来访问,并有一个performEat()方法(该方法通过调用EatBehavior接口的eat方法来完成功能)和三个属性的构造器;中国人(Chinese)和美国人(American)两个类分别继承Person类,中国人吃中餐,美国人吃西餐 创建一个Test类进行测试。 总结 你学到了吗? 如何使用多态? 引用数据类型的转换 如何使用接口? 如何进行面向接口的编程? * * * * 第八章 多态和接口 本讲内容 继承实现的多态 类型转换与instanceof运算符 接口 接口实现的多态 面向接口的编程 本讲目标 掌握多态的概念及用法。 掌握接口的概念及用法 宠物生病了,需要主人给宠物看病 不同宠物看病过程不一样 不同宠物恢复后体力值不一样 打针 吃药 吃药 疗养 狗狗 Q仔 编写主人类 编写给狗狗看病的方法 编写给Q仔看病的方法 public class Master { public void Cure(Dog dog) { if (dog.getHealth() 50) { dog.setHealth(60); System.out.println(打针、吃药); } } public void Cure(Penguin penguin){ if (penguin.getHealth() 50) penguin.setHealth(70); System.out.println(吃药、疗养); } } 主人类 … … Master master = new Master(); master.Cure(dog); master.Cure(penguin); … … 测试方法 如
您可能关注的文档
最近下载
- 最新版军队文职人员招聘(司机岗)考试题库(完整版).pdf.docx VIP
- 17J008 挡土墙(重力式、衡重式、悬臂式)(最新).pdf VIP
- ABB传动与变频器 云连接助手型控制盘用户手册 安装及操作手册.pdf
- 医疗器械生产企业操作规程.doc VIP
- 滑模、爬模、翻模施工技术对比.ppt
- 最新2023版知识产权贯标GBT29490表单 知识产权风险和机遇识别评价清单[知识产权合规管理体系文件].docx
- 路基工程施工组织设计.docx VIP
- 初一新生入学分班考试语文、数学、英语真题卷及详细答案(6套)名校.doc VIP
- 七年级数学培优精华.pdf VIP
- 慢性阻塞性肺疾病完整版.ppt VIP
文档评论(0)