《java多态.ppt.ppt》由会员分享,可在线阅读,更多相关《java多态.ppt.ppt(11页珍藏版)》请在金锄头文库上搜索。
1、多态,类和对象,为什么需要多态 5-1,在教员类的基础上,开发一个类代表总部,负责对各教员进行评估,评估内容包括: 1、教员的自我介绍 2、教员的授课,为什么需要多态 5-2,public class HQ1 public void judge(JavaTeacher2 t) t.introduction(); t.giveLesson(); public void judge(DotNetTeacher2 t) t.introduction(); t.giveLesson(); public static void main(String args) HQ1 hq = new HQ1();
2、hq.judge(new JavaTeacher2(李明,北京中心“); hq.judge(new DotNetTeacher2(张明,天津中心“); ,第一种解决方案,大家好!我是北京中心的李明. 启动 Eclipse 知识点讲解 总结提问 大家好!我是天津中心的张明. 启动 Visual Studio 2005 知识点讲解 总结提问,控制台输出,为什么需要多态 5-3,现在,升级教员类,增加一种新类型:DBTeacher,该类型的教员专门负责教授数据库,要求如下: 属性:姓名、所属中心 方法:授课(启动Sql Server、实施理论课授课)、自我介绍 同时,总部也负责对这类教员进行评估,为
3、什么需要多态 5-4,如果在第一种解决方案的基础上去解决,我们需要如下两个步骤: 建立DBTeacher类 修改总部类,增加方法:judge(DBTeacher t),每增加一种新的教员类型,都要修改总部类,增加相应的judge(评估)方法,代码的可扩展性及可维护性极差,能找到这个解决方案的弊端吗?,为什么需要多态 5-5,第二种解决方案使用多态,public class HQ3 public void judge(AccpTeacher t) t.introduction(); t.giveLesson(); public static void main(String args) HQ3
4、hq = new HQ3(); hq.judge(new JavaTeacher2(李明,北京中心“); hq.judge(new DotNetTeacher2(张明,天津中心); hq.judge(new DBTeacher(“李岚,北京中心“); ,可以接收子类类型,根据实际创建的对象类型调用相应方法,大家好!我是北京中心的李明. 启动 Eclipse 知识点讲解 总结提问 大家好!我是天津中心的张明. 启动 Visual Studio 2005 知识点讲解 总结提问 大家好!我是北京中心的李岚. 启动 Sql Server 知识点讲解 总结提问,控制台输出,使用多态之后,当需要增加新的子
5、类类型时,无需更改总部类,程序的可扩展性及可维护性增强,什么是多态,简单来说,多态是具有表现多种形态的能力的特征 同一个实现接口,使用不同的实例而执行不同操作,彩色打印机,打印机,黑白打印机,打印效果:彩色,打印效果:黑白,打印,打印,public class Teacher public void giveLesson() System.out.println(知识点讲解); System.out.println(总结提问); ,如何实现多态,1、子类重写父类的方法 2、编写方法时,使用父类定义的方法 3、运行时,根据实际创建的对象类型动态决定使用哪个方法,小结 2,请编码实现如下需求: 乐
6、器(Instrument)分为:钢琴(Piano)、小提琴(Violin) 各种乐器的弹奏( play )方法各不相同。 编写一个测试类InstrumentTest,要求: 编写方法testPlay,对各种乐器进行弹奏测试。要依据乐器的不同,进行相应的弹奏。 在main方法中进行测试,总结 2-1,class Base public String name; public Base() name = Base; public Base(String pName) name = pName; public void method() System.out.println(name); ,clas
7、s Child extends Base public Child() super(Child1); name=Child2; ,给定如下Java代码,编译运行后,输出结果是什么?,public class Sample public static void main(String args) Child c = new Child(); c.method(); ,Child2,控制台输出,1,2,3,总结 2-2,给定如下Java代码,编译运行后,输出结果是什么?,public class Teacher public void giveLesson() System.out.println(知识点讲解); ,public class DBTeacher extends Teacher public void giveLesson() System.out.println(启动 SqlServer); ,1,2,public class Test public static void main(String args) Teacher t = new DBTeacher (); t.giveLesson(); ,控制台输出,启动 SqlServer,