- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
9-Java对象的多态性要点
Java编程精要 — Java对象的多态性 福建 ? 厦门 2016年6月 多态性概述 创建教员基类(Teacher), 在教员基类的基础上,再创建两个子类:JAVA教员(JavaTeacher)和.NET教员(DotNetTeacher), 开发一个类代表教学管理中心,负责对各教员进行评估,评估内容包括: 1、教员的自我介绍 2、教员的授课 现在,升级教员类,增加一种新类型:DBTeacher,该类型的教员专门负责教授数据库,要求如下: 属性:姓名、年龄、教学年限 方法:授课(启动Sql Server、实施理论课授课)、自我介绍 同时,教学管理中心也负责对这类教员进行评估 如果在前述方案的基础上去解决,我们需要如下两个步骤: 建立DBTeacher类 修改教学管理中心类,增加方法:judge(DBTeacher t) 多态概述 多态是指具有表现多种形态的能力 同一个实现接口,使用不同的实例而执行不同操作 1、子类重写父类的方法 2、编写方法时,使用父类定义的方法 3、运行时,JVM会根据实际创建的对象类型动态决定使用哪个方法 编程练习 请编码实现如下需求: 乐器(Instrument)分为:钢琴(Piano)、小提琴(Violin) 各种乐器的弹奏( play )方法各不相同。 编写一个测试类InstrumentTest,要求: 编写方法playTest,对各种乐器进行弹奏测试。要依据乐器的不同,进行相应的弹奏。 在main方法中进行测试 给定如下Java代码,编译运行后,输出结果是什么? * * * * * * * * * * * * Instrument.java Piano.java Violin.java * * 本章相关词汇 单 词 说 明 Override method 方法重写 Convert 转换 abstract 抽像的 本章目标 对象的多态性 抽像方法 public class TeacherManager { public void judge(JavaTeacher t){ t.introduce(); t.teach(); } public void judge(DotNetTeacher t){ t.introduce(); t.teach(); } public static void main(String[] args) { TeacherManager tmq = new TeacherManager (); tmq.judge(new JavaTeacher(李明, 25, 3)); tmq.judge(new DotNetTeacher(张明, 27, 5)); } } 每增加一种新的教员类型,都要修改教学管理中心类,增加相应的judge(评估)方法,代码的可扩展性及可维护性差 这种方法有什么不好的地方? 彩色打印机 打印机 黑白打印机 打印效果:彩色 打印效果:黑白 打印 打印 public class TMQ { public void judge(Teacher t){ t.sayHi(); t.lesson(); } public static void main(String[] args) { TMQ tmq = new TMQ(); tmq.judge(new JavaTeacher(李明,25,3)); tmq.judge(new DotNetTeacher(张明,27,5)); tmq.judge(new DBTeacher(“李岚,26,3)); } } 可以接收子类类型 根据实际创建的对象类型调用相应方法 public class Teacher { public void teach(){ System.out.println(知识点讲解); System.out.println(总结提问); } } public class TMQ { public void judge(Teacher t) { t.teach(); } } public class Test { public static void main(String[ ] args) { TMQ hq = new TMQ(); hq.judge(new DBTeacher()); } } public class DBTeacher extends Teacher { public void teach(){ System.out.println(启动 SqlServer); su
文档评论(0)