1、面向对象的 Java实现 -继承和多态第十一、十二讲1回顾n 在 Java程序中,代码封装带给我们的好处是什么?n 举例说明什么是方法重载?n Java中的构造方法与实例方法,有什么区别?2预习检查q 举例说明在什么样的情况下,需要使用到继承?q 在 Java程序中,多态性带给我们的好处是什么?3本章任务输出 5.0教员的基本信息:n 使用继承提高代码的复用性 n 使用多态提高代码的可扩展性及可维护性4n 掌握继承n 掌握 super关键字n 掌握多态本章目标5生活中的继承 2-1n 生活中,继承的例子随处可见动物食草动物 食肉动物谁是父类?谁是子类?能说出继承的特点吗?继承需要符合的关系:
2、is-a,父类更通用、子类更具体6生活中的继承 2-2n 子类具有父类的一般特性(包括属性和行为),以及自身特殊的特性巴士是汽车吗?卡车是汽车吗?出租车是汽车吗?最大载客数量报站引擎数量外观颜色刹车加速汽车最大载重量卸货所属公司最大载客数量打发票属性行为请问:出租车包含哪些属性和行为呢?7为什么需要继承 4-1n 开发教员类,其中教员分为 Java教员以及.NET教员,各自的要求如下:q Java教员n 属性:姓名、所属中心n 方法:授课(步骤:打开 Eclipse、实施理论课授课)、自我介绍q .NET教员n 属性:姓名、所属中心n 方法:授课(步骤:打开 Visual studio 200
3、5、实施理论课授课)、自我介绍8n 请问:以下这个解决方案中存在着什么问题?为什么需要继承 4-2public class DotNetTeacher private String name; / 教员姓名private String school; / 所在中心public AccpDotNetTeacher(String myName, String mySchool) name = myName; school = mySchool;public void giveLession()System.out.println(“启动 Visual Studio 2005“);System.ou
4、t.println(“知识点讲解 “);System.out.println(“总结提问 “);public void introduction() System.out.println(“大家好!我是 “ + school + “的 “ + name + “.“);public class JavaTeacher private String name; / 教员姓名private String school; / 所在中心public AccpJavaTeacher(String myName, String mySchool) name = myName; school = myScho
5、ol;public void giveLession()System.out.println(“启动 Eclipse“);System.out.println(“知识点讲解 “);System.out.println(“总结提问 “);public void introduction() System.out.println(“大家好!我是 “ + school + “的 “ + name + “.“);代码存在重复,违背了 “write once, only once”的原则 9为什么需要继承 4-3n 如何改进?有没有可能建立继承关系,让子类自动继承父类的属性和方法?Java教员是教员吗?
6、.NET教员是教员吗?public class Teacher private String name; / 教员姓名private String school; / 所在中心public AccpTeacher(String myName,String mySchool) name = myName;school = mySchool;public void giveLesson()System.out.println(“知识点讲解 “);System.out.println(“总结提问 “);public void introduction() System.out.println(“大家好!我是 “+ school + “的 “ + name + “。“);现在,所有子类中相同的代码都抽取到父类中了 属性行为姓名所在中心授课自我介绍教员Java教员 .NET教员10