您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 信息化管理 > java-继承经典教程
继承第二章回顾及作业点评如何从现实世界抽象出类?构造方法的语法要求是什么?static和final的含义是什么?请一位同学到白板上画出Dog类的类图。预习检查如何继承一个类?使用继承有什么好处?抽象类和抽象方法的特点是什么?本章任务优化电子宠物系统实现汽车租赁系统计价功能掌握继承的优点和实现掌握子类重写父类方法掌握继承下构造方法的执行过程掌握抽象类和抽象方法的使用掌握final修饰属性、方法和类本章目标为什么使用继承2-1这两个类图有什么问题?-name:String-health:int-love:int-strain:StringDog+print():void+getName():String+getHealth():int+getLove():int+getStrain:String+Dog()-name:String-health:int-love:int-sex:StringPenguin+print():void+getName():String+getHealth():int+getLove():int+getSex():String+Penguin()使用继承优化设计将重复代码抽取到父类中为什么使用继承2-2使用继承优化后:子类与父类是is-a关系减少代码量方便修改代码如何使用继承使用继承编写父类编写子类,继承父类classPet{//公共的属性和方法}classDogextendsPet{//子类特有的属性和方法}classPenguinextendsPet{}只能继承一个父类继承关键字对比C#用“:”理解继承4-1子类访问父类成员访问父类属性访问父类方法使用super关键字super.name;super.print();演示示例:super用法super代表父类对象理解继承4-2有些父类成员不能继承private成员子类与父类不在同包,使用默认访问权限的成员构造方法演示示例:不能继承的情况理解继承4-3访问修饰符protected可以修饰属性和方法本类、同包、子类可以访问访问修饰符总结访问修饰符本类同包子类其他private√默认(friendly)√√protected√√√public√√√√理解继承4-4继承后的初始化顺序演示示例:断点追踪初始化过程父类属性子类属性父类构造方法子类构造方法在何处使用继承何时使用继承?继承与真实世界类似只要说“猫是哺乳动物”,猫的很多属性、行为就不言自明了藏獒是一种狗继承是代码重用的一种方式将子类都有的属性和行为放到父类中符合is-a关系的设计使用继承小结2-1继承使用什么关键字?子类可以继承父类的哪些成员?使用继承有什么好处?小结2-2阅读代码,说出运行结果classCar{privateintsite=4;//座位数Car(){System.out.println(载客量是+site+人);}publicvoidsetSite(intsite){this.site=site;}voidprint(){System.out.print(载客量是+site+人);}}classBusextendsCar{Bus(intsite){setSite(site);}}publicstaticvoidmain(String[]args){Busbus=newBus(20);bus.print();}载客量是4人载客量是20人方法重写子类中有和父类相同签名的方法,会如何?演示示例:断点调试print()方法子类重写父类方法继承中的构造方法构造方法也会被重写吗?如何在子类中调用父类的构造方法?super();super(参数表);演示示例:断点调试super用法可以被默认添加只能是构造方法的第一条语句不能被继承因此不能重写指导——优化电子宠物系统2-1训练要点:继承子类重写父类方法理解继承中的初始化过程需求说明:优化电子宠物系统使用继承实现Dog类和Penguin类打印宠物信息讲解需求说明指导——优化电子宠物系统2-2实现思路:完成时间:20分钟继承抽象类以下代码有什么问题?Java中也使用抽象类,限制实例化Petpet=newPet(贝贝,20,40);pet.print();实例化Pet没有意义publicabstractclassPet{}在C#中通过抽象类实现抽象方法以下代码有什么问题?abstract也可用于方法——抽象方法抽象方法没有方法体抽象方法必须在抽象类里抽象方法必须在子类中被实现,除非子类是抽象类publicabstractvoidprint();没有方法体publicabstractclassPet{publicvoidprint(){//…}}每个子类的实现不同指导——抽象Pet类2-1训练要点:抽象类的定义和继承抽象方法定义和重写需求说明:修改Pet类为抽象类修改Pet类的print()方法为抽象方法输出Dog信息讲解需求说明指导——抽象Pet类2-2实现思路修改Pet类为抽象类,修改print()为抽象方法Dog类继承Pet类,实现print()方法运行测试注释掉Dog类中print()方法,运行测试类查看错误信息编写注释完成时间:15分钟final用法Penguin类不希望再被其他类继承?使用final类方法不希望被重写?使用final方法属性值不希望被修改?使用final方法publicfinalclassPenguinextendsPet{//…}最终版的类publicfinalvoidprint(){//…}最终版的方法publicclassPenguin{finalStringhome=南极;//居住地publicvoidsetHome(Stringname){this.home=home;//错误,home不可以再次赋值}}最终版的属性值共性问题集中讲解常见调试问题及解决办法代码规范问题共性问题集中讲解常见错误请指出下面代码的错误classDog{Stringname;publicDog(Stringname){this.name=name;}}classTest{publicstaticvoidmain(String[]args){finalDogdog=newDog(欧欧);dog.name=美美;dog=newDog(亚亚);}}使用final修饰引用型变量,变量不可以再指向另外的对象使用final修饰引用型变量,变量的值是固定不变的,而变量所指向的对象的属性值是可变的综合案例某汽车租赁公司出租多种车辆,车型及租金情况如下:编写程序实现计算租赁价轿车客车(金杯、金龙)车型别克商务舱GL8宝马550i别克林荫大道=16座16座日租费(元/天)6005003008001500综合案例分析2-1发现类发现类的属性综合案例分析2-2发现类的方法优化设计编写程序入口练习——编写MotoVehicle、Car、Bus类需求说明:根据分析编写MotoVehicle、Car、Bus类完成时间:25分钟练习——编写测试代码运行需求说明:编写测试代码运行完成时间:5分钟总结如何继承一个类?继承有什么好处?抽象类和抽象方法的特点是什么?面向对象设计的步骤是什么?作业课后作业必做教员备课时在此添加内容选做教员备课时在此添加内容提交时间:xxx提交形式:xxx预习作业背诵英文单词教员备课时在此添加内容
本文标题:java-继承经典教程
链接地址:https://www.777doc.com/doc-1877353 .html