《ACCP7.0_S2_Java面向对象编程_第2章(精品).pptx》由会员分享,可在线阅读,更多相关《ACCP7.0_S2_Java面向对象编程_第2章(精品).pptx(38页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、继承继承第二章第二章回顾及作业点评回顾及作业点评如何从现实世界抽象出类?如何从现实世界抽象出类?方法重载的规则有哪些?方法重载的规则有哪些?如何实现封装?如何实现封装?提问提问提问提问2/38预习检查预习检查如何继承一个类?如何继承一个类?使用继承有什么好处?使用继承有什么好处?抽象类和抽象方法的特点是什么?抽象类和抽象方法的特点是什么?提问提问提问提问3/38本章任务本章任务优化电子宠物系统优化电子宠物系统实现汽车租赁系统计价功能实现汽车租赁系统计价功能4/38本章目标本章目标掌握继承的优点和实现掌握继承的优点和实现掌握子类重写父类方法掌握子类重写父类方法掌握继承下构造方法的执行过程掌握继承
2、下构造方法的执行过程掌握抽象类和抽象方法的使用掌握抽象类和抽象方法的使用掌握掌握final修饰属性、方法和类修饰属性、方法和类5/38为什么使用继承为什么使用继承 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():vo
3、id+getName():String+getHealth():int+getLove():int+getSex():String+Penguin()将重复将重复代码代码抽取到抽取到父类中父类中问题问题问题问题使用继承优化设计使用继承优化设计6/38为什么使用继承为什么使用继承 2-2使用继承优化后:使用继承优化后:减少代码量减少代码量 方便修改代码方便修改代码 子类与父类是子类与父类是is-a关系关系7/38如何使用继承如何使用继承使用继承使用继承编写父类编写父类编写子类,继承父类编写子类,继承父类class Pet /公共的属性和方法公共的属性和方法class Dog extends Pe
4、t /子类特有的属性和方法子类特有的属性和方法class Penguin extends Pet 只能继承一个父类只能继承一个父类 继承关键字继承关键字 C#用用“:”对比对比8/38理解继承理解继承4-1子类访问父类成员子类访问父类成员访问父类构造方法访问父类构造方法访问父类属性访问父类属性访问父类方法访问父类方法 使用使用super关键字关键字,super代表父类对象代表父类对象 super.name;super.print();演示示例演示示例1:使用继承优化电子宠物系统:使用继承优化电子宠物系统super();super(name);在子类构造方法中调用且在子类构造方法中调用且必须是第
5、一句必须是第一句9/38理解继承理解继承4-2子类可以继承父类的所有些资源吗?子类可以继承父类的所有些资源吗?演示示例演示示例2:不能被继承的情况:不能被继承的情况 提问提问提问提问构造方法构造方法子类与父类不在同包,子类与父类不在同包,使用默认访问权限的成员使用默认访问权限的成员private成员成员 不不能能被被继继承承的的父父类类成成员员10/38理解继承理解继承4-3访问修饰符访问修饰符protected可以修饰属性和方法可以修饰属性和方法本类、同包、子类可以访问本类、同包、子类可以访问访问修饰符总结访问修饰符总结 访问修饰符访问修饰符本类本类同包同包子类 其他其他private默认默
6、认(friendly)protectedpublic11/38理解继承理解继承4-4多重继承关系的初始化顺序是怎样的?多重继承关系的初始化顺序是怎样的?演示示例演示示例3:断点追踪初始化过程:断点追踪初始化过程 子类构造子类构造方法方法子类属性子类属性父类构造父类构造方法方法父类属性父类属性 提问提问提问提问12/38在何处使用继承在何处使用继承何时使用继承?何时使用继承?继承与真实世界类似继承与真实世界类似只要说只要说“猫是哺乳动物猫是哺乳动物”,猫的很多属性、行为,猫的很多属性、行为 就不言自明了就不言自明了藏獒是一种狗藏獒是一种狗继承是代码重用的一种方式继承是代码重用的一种方式 将子将子
7、类共有类共有的属性和行为放到父类中的属性和行为放到父类中 符合符合is-a关系的设计使用继承关系的设计使用继承 问题问题问题问题13/38小结小结2-1继承使用什么关键字?继承使用什么关键字?子类可以继承父类的哪些成员?子类可以继承父类的哪些成员?使用继承有什么好处?使用继承有什么好处?提问提问提问提问14/38小结小结2-2阅读代码,说出运行结果阅读代码,说出运行结果class Car private int site=4;/座位数座位数 Car()System.out.println(载客量是载客量是+site+人人);public void setSite(int site)this.s
8、ite=site;void print()System.out.print(载客量是载客量是+site+人人);class Bus extends Car Bus(int site)setSite(site);public static void main(String args)Bus bus=new Bus(20);bus.print();载客量是载客量是4人人载客量是载客量是20人人 代码阅读代码阅读代码阅读代码阅读15/38方法重写方法重写使用继承后效果使用继承后效果 子类重写父类方法子类重写父类方法 问题问题问题问题调用父类的调用父类的print()方法,方法,不能显示不能显示Dog
9、的的strain信信息和息和Peguin的的sex信息信息如何实现如下效果呢?如何实现如下效果呢?演示示例演示示例4:使用重写优化电子宠物系统:使用重写优化电子宠物系统 16/38小结小结2-1构造方法也会被重写吗?构造方法也会被重写吗?方法重写的规则方法重写的规则方法名相同方法名相同参数列表相同参数列表相同返回值类型相同或者是其子类;返回值类型相同或者是其子类;访问权限不能严于父类访问权限不能严于父类方法重载与方法重写方法重载与方法重写提问提问提问提问 不能被继承,不能被继承,因此不能重写因此不能重写 位置位置方法名方法名参数表参数表返回值返回值访问修饰符访问修饰符方法重写方法重写子类子类相
10、同相同相同相同相同或是相同或是其子类其子类不能比父类更不能比父类更严格严格方法重载方法重载同类同类相同相同不相同不相同无关无关无关无关17/38小结小结2-2super关键字来访问父类的成员关键字来访问父类的成员super只能出现在子类的方法和构造方法中只能出现在子类的方法和构造方法中super调用构造方法时,只能是第一句调用构造方法时,只能是第一句super不能访问父类的不能访问父类的private成员成员18/38学员操作学员操作优化电子宠物系统优化电子宠物系统2-1训练要点:训练要点:继承继承子类重写父类方法子类重写父类方法理解继承中的初始化过程理解继承中的初始化过程需求说明:需求说明:
11、优化电子宠物系统优化电子宠物系统使用继承实现使用继承实现Dog类和类和Penguin类类打印宠物信息打印宠物信息指导指导指导指导讲解需求说明讲解需求说明19/38学员操作学员操作优化电子宠物系统优化电子宠物系统2-2实现思路:实现思路:继承继承 指导指导指导指导完成时间:完成时间:20分钟分钟20/38共性问题集中讲解共性问题集中讲解常见问题及解决办法常见问题及解决办法代码规范问题代码规范问题调试技巧调试技巧共性问题集中讲解共性问题集中讲解共性问题集中讲解共性问题集中讲解21/38抽象类抽象类以下代码有什么问题?以下代码有什么问题?Java中也使用抽象类,限制实例化中也使用抽象类,限制实例化P
12、et pet=new Pet(贝贝贝贝,20,40);pet.print();实例化实例化Pet没有意义没有意义 public abstract class Pet 在在C#中通过抽象类中通过抽象类实现实现问题问题问题问题22/38抽象方法抽象方法以下代码有什么问题?以下代码有什么问题?abstract也可用于方法也可用于方法抽象方法抽象方法抽象方法没有方法体抽象方法没有方法体抽象方法必须在抽象类里抽象方法必须在抽象类里抽象方法必须在子类中被实现,除非子类是抽象类抽象方法必须在子类中被实现,除非子类是抽象类public abstract void print();没有方法体没有方法体 publ
13、ic abstract class Pet public void print()/每个子类的实现不同每个子类的实现不同问题问题问题问题23/38学员操作学员操作抽象抽象Pet类类2-1训练要点:训练要点:抽象类的定义和继承抽象类的定义和继承抽象方法定义和重写抽象方法定义和重写 需求说明:需求说明:修改修改Pet类为抽象类类为抽象类修改修改Pet类的类的print()方法为抽象方法方法为抽象方法输出输出Dog信息信息指导指导指导指导讲解需求说明讲解需求说明24/38学员操作学员操作抽象抽象Pet类类2-2实现思路实现思路修改修改Pet类为抽象类,修改类为抽象类,修改print()为抽象方法为抽
14、象方法Dog类继承类继承Pet类,实现类,实现print()方法方法运行测试运行测试注释掉注释掉Dog类中类中print()方法,运行测试类查看错误方法,运行测试类查看错误信息信息编写注释编写注释指导指导指导指导完成时间完成时间:15分钟分钟25/38共性问题集中讲解共性问题集中讲解常见问题及解决办法常见问题及解决办法代码规范问题代码规范问题调试技巧调试技巧共性问题集中讲解共性问题集中讲解共性问题集中讲解共性问题集中讲解26/38final用法用法Penguin类不希望再被其他类继承?类不希望再被其他类继承?使用使用final类类方法不希望被重写?方法不希望被重写?使用使用final方法方法属
15、性值不希望被修改?属性值不希望被修改?使用常量使用常量public final class Penguin extends Pet /最终版的类最终版的类 public final void print()/最终版的方法最终版的方法public class Penguin final String home=南极南极;/居住地居住地 public void setHome(String name)this.home=home;/错误,不可再赋值错误,不可再赋值 最终版的属性值最终版的属性值问题问题问题问题27/38常见错误常见错误请指出下面代码的错误请指出下面代码的错误class Dog St
16、ring name;public Dog(String name)this.name=name;class Test public static void main(String args)final Dog dog=new Dog(欧欧欧欧);dog.name=美美美美;dog=new Dog(亚亚亚亚);使用使用final修饰引用型变量修饰引用型变量,变量变量不可以再指向另外的对象不可以再指向另外的对象使用使用final修饰引用型变量,变量的值是固定不变的修饰引用型变量,变量的值是固定不变的,而而变量所指向的对象的属性值是可变的变量所指向的对象的属性值是可变的28/38综合案例综合案例某汽
17、车租赁公司出租多种车辆,车型及租金情某汽车租赁公司出租多种车辆,车型及租金情况如下:况如下:编写程序实现计算租赁价编写程序实现计算租赁价问题问题问题问题轿车轿车客车(金杯、金龙)客车(金杯、金龙)车型车型别克商务别克商务舱舱GL8宝马宝马550i别克林别克林荫大道荫大道16座座日租费日租费(元元/天天)600500300800150029/38综合案例分析综合案例分析2-1发现类发现类发现类的属性发现类的属性分析分析分析分析30/38综合案例分析综合案例分析2-2发现类的方法发现类的方法优化设计优化设计编写程序入口编写程序入口分析分析分析分析31/38学员操作学员操作编写编写MotoVehic
18、le、Car、Bus类类需求说明:需求说明:根据分析编写根据分析编写MotoVehicle、Car、Bus类类练习练习练习练习完成时间:完成时间:25分钟分钟32/38学员操作学员操作编写测试代码运行编写测试代码运行需求说明:需求说明:编写测试代码运行编写测试代码运行练习练习练习练习完成时间完成时间:5分钟分钟33/38共性问题集中讲解共性问题集中讲解常见问题及解决办法常见问题及解决办法代码规范问题代码规范问题调试技巧调试技巧共性问题集中讲解共性问题集中讲解共性问题集中讲解共性问题集中讲解34/38总结总结2-1继承继承符合符合is-a关系关系使用使用extends关键字关键字代码复用代码复用
19、方法重写的规则方法重写的规则方法名相同方法名相同参数列表相同参数列表相同返回值类型相同或者是其子类返回值类型相同或者是其子类访问权限不能严于父类访问权限不能严于父类super关键字来访问父类的成员关键字来访问父类的成员super只能出现在子类的方法和构造方法中只能出现在子类的方法和构造方法中super调用构造方法时,只能是第一句调用构造方法时,只能是第一句super不能访问子类的不能访问子类的private成员成员35/38总结总结2-2抽象类和抽象方法抽象类和抽象方法抽象类不能被实例化抽象类不能被实例化可以有可以有0多个抽象方法多个抽象方法非抽象类必须重写父类的所有抽象方法非抽象类必须重写父类的所有抽象方法final修饰符修饰符修饰的类,不能再被继承修饰的类,不能再被继承修饰的方法,不能被子类重写修饰的方法,不能被子类重写修饰的变量将变成常量,只能在初始化时进行赋值修饰的变量将变成常量,只能在初始化时进行赋值36/38作业作业课后作业课后作业教员备课时根据班级情况在此添加内容,应区分必教员备课时根据班级情况在此添加内容,应区分必做、选做内容,以满足不同层次学员的需求做、选做内容,以满足不同层次学员的需求预习作业预习作业预习目标预习目标了解什么是多态及如何实现多态。了解什么是多态及如何实现多态。预习下一章学生用书,完成预习作业预习下一章学生用书,完成预习作业37/3838/38
限制150内