PPT20多态Java程序设计实战案例教程

上传人:枫** 文档编号:568794441 上传时间:2024-07-26 格式:PPT 页数:16 大小:1.63MB
返回 下载 相关 举报
PPT20多态Java程序设计实战案例教程_第1页
第1页 / 共16页
PPT20多态Java程序设计实战案例教程_第2页
第2页 / 共16页
PPT20多态Java程序设计实战案例教程_第3页
第3页 / 共16页
PPT20多态Java程序设计实战案例教程_第4页
第4页 / 共16页
PPT20多态Java程序设计实战案例教程_第5页
第5页 / 共16页
点击查看更多>>
资源描述

《PPT20多态Java程序设计实战案例教程》由会员分享,可在线阅读,更多相关《PPT20多态Java程序设计实战案例教程(16页珍藏版)》请在金锄头文库上搜索。

1、多态情境引入在我们的自然界中,有动物(Animal)之类别(Class),而且由动物继承出类别鸡(Chicken)和类别狗(Dog),并对同一源自类别动物(父类别)之一消息有不同、的响应,如类别动物有“叫()”的动作,而类别鸡会“啼叫()”,类别狗则会“吠叫()”,则称之为多态。多态意指相同的消息给予不同的对象会引发不同的动作生活中的多态生活中的多态l面向对象的三大特征l封装 可以提高程序的安全性l继承 可以提高代码的复用性l多态 可以提高程序的可扩展和可维护性l生活中的多态 父类:打印机类 ,功能:打印 子类:黑白打印机 子类:彩色打印机案例:模拟打印机打印文件 示例11-1package

2、cn.sxt.pro;public abstract class Printer /父类打印机类父类打印机类 public abstract void print();/打印的方法打印的方法 package cn.sxt.pro;public class BlackPrinter extends Printer Override public void print() System.out.println(黑白打印黑白打印.); package cn.sxt.pro;public class ColorPrinter extends Printer Override public void p

3、rint() System.out.println(彩色打印彩色打印-); package cn.sxt.pro;public class Test public static void main(String args) Printer black=new BlackPrinter();black.print();/调用黑白打印机的方法调用黑白打印机的方法Printer color=new ColorPrinter();color.print();/调用彩色打印机的方法调用彩色打印机的方法 生活中的多态:同一种事物,由于条件不同,产生的结果不同 Java中的多态:同一个引用类型,使用不同的实

4、例而执行不同的操作 为什么需要多态在教师类的基础上,开发一个类代表总部,负责对各教师进行评估,评估内容包括: 1、教师的自我介绍 2、教师的授课4第一种解决方案5public 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();hq.judge(new A

5、ccpJavaTeacher2(“李明李明”,“软件教研室软件教研室“);hq.judge(new AccpDotNetTeacher2(“张明张明”,“网络教研室网络教研室“);大家好!我是软件教研室的李明大家好!我是软件教研室的李明.启动启动 Eclipse知识点讲解知识点讲解总结提问总结提问大家好!我是网络教研室的张明大家好!我是网络教研室的张明.启动启动 Visual Studio 2005知识点讲解知识点讲解总结提问总结提问控制台输出控制台输出为什么需要多态现在,改进教师类,增加一种新类型:DBTeacher,该类型的教师专门负责教授数据库,要求如下:属性:姓名、所属教研室方法:授课

6、(启动Sql Server、实施理论课授课)、自我介绍同时,总部也负责对这类教师进行评估6为什么需要多态如果在第一种解决方案的基础上去解决,我们需要如下两个步骤:建立DBTeacher类修改总部类,增加方法:judge(DBTeachert)7每增加一种新的教师类型,都要修改总部类,增加相应的每增加一种新的教师类型,都要修改总部类,增加相应的judge(评估评估)方法,代码的可扩展性及可维护性极差方法,代码的可扩展性及可维护性极差 能找到这个解决方案的弊端吗?能找到这个解决方案的弊端吗?为什么需要多态第二种解决方案使用多态8public class HQ3 public void judge(

7、Teacher t)t.introduction();t.giveLesson();public static void main(String args) HQ3 hq = new HQ3();hq.judge(new AccpJavaTeacher2(李明李明,北京中心北京中心“);hq.judge(new AccpDotNetTeacher2(张明张明,天津中心天津中心);hq.judge(new AccpDBTeacher(“李岚李岚,北京中心北京中心“);可以接收子类类型可以接收子类类型根据实际创建的对象根据实际创建的对象类型调用相应方法类型调用相应方法大家好!我是软件教研室的李明大

8、家好!我是软件教研室的李明.启动启动 Eclipse知识点讲解知识点讲解总结提问总结提问大家好!我是网络教研室的张明大家好!我是网络教研室的张明.启动启动 Visual Studio 2005知识点讲解知识点讲解总结提问总结提问大家好!我是软件教研室的李岚大家好!我是软件教研室的李岚.启动启动 Sql Server知识点讲解知识点讲解总结提问总结提问控制台输控制台输出出使用多态之后,当需要增加新的子类类型时,无需更改总部类,程序的可扩展性及可维护性增强 什么是多态简单来说,多态是具有表现多种形态的能力的特征同一个实现接口,使用不同的实例而执行不同操作9打印效果:彩色打印效果:彩色打印效果:黑白

9、打印效果:黑白打印打印 打印打印 彩色打印机彩色打印机 打印机打印机 黑白打印机黑白打印机如何实现多态1、子类子类重写重写父类的方法父类的方法2、编写方法时,使用父类定义的方法、编写方法时,使用父类定义的方法3、运行时,根据实际创建的对象类型动态决定使用哪个方法、运行时,根据实际创建的对象类型动态决定使用哪个方法10public class DBTeacher extends Teacher public void giveLesson() System.out.println(启启动动 SqlServer); super.giveLesson(); 1public class Teacher

10、 public void giveLesson() System.out.println(知知识识点点讲讲解解); System.out.println(总结总结提提问问); public class HQ3 public void judge(Teacher t) t.giveLesson(); 2public class Test public static void main(String args) HQ3 hq = new HQ3(); hq.judge(new DBTeacher(); 3public class Test public static void main(Strin

11、g args) HQ3 hq = new HQ3(); hq.judge(new DBTeacher(); 继承是多态得以实现的基础案例:Interface Animal void shout();class Cat implements Animal public void shout() System.out.println(“喵喵”); class Dog implements Animal public void shout() System.out.println(“汪汪”); 11public class Example public static void main(String

12、 args) Animal an1=new Cat(); Animal an2=new Dog(); annimalShout(an1); annimalShout(an2); public static void animalShout(Animal an) an.shout(); 多态使程序变的更加灵活,从而有效提高了程序的可扩展性和可维护性多态的两种表现形式多态的两种表现形式l多态常见的表现形式l父类作方法的形式参数l父类作方法的返回值 案例:父类作方法的形式参数案例:测试父类作方法形参public class HQ3 public void judge(Teacher t) t.giv

13、eLesson(); public class Test public static void main(String args) HQ3 hq = new HQ3(); hq.judge(new DBTeacher(); 案例:父类作方法的返回值案例:测试父类作方法的返回值13public class Test public static TeacherTeacher getTeacher(int int c c) ) Teacher t=null; switch(c) case 1: t=new JavaTeacher(“李明李明”,“软件教研室软件教研室”); break; case 2

14、: t=new DBTeacher(“王霞王霞”,“网络教研室网络教研室”); break; return t; 总结 2-1给定如下Java代码,编译运行后,输出结果是什么?14class Base public String name;public Base()name = Base;public Base(String pName)name = pName;public void method()System.out.println(name);class Child extends Basepublic Child()super(Child1);name=Child2;public c

15、lass Sample public static void main(String args) Child c = new Child(); c.method(); Child2 控制台输控制台输出出123总结 2-2给定如下Java代码,编译运行后,输出结果是什么?15public class Teacher public void giveLesson()System.out.println(知识点讲解知识点讲解);public class DBTeacher extends Teacher public void giveLesson()System.out.println(启动启动 SqlServer);12public class Test public static void main(String args) Teacher t = new DBTeacher ();t.giveLesson(); 控制台输控制台输出出 启动启动 SqlServer 感谢观看

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 医学/心理学 > 基础医学

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号