Java程序设计任务驱动式教程09章.ppt
《Java程序设计任务驱动式教程09章.ppt》由会员分享,可在线阅读,更多相关《Java程序设计任务驱动式教程09章.ppt(36页珍藏版)》请在三一办公上搜索。
1、,Java程序设计任务驱动式教程,主编:孙修东、王永红高职高专规划示范教材,北京航空航天大学出版社,2,目录,任务一 搭建环境(构建Java集成开发环境),任务二 Java欢迎你(开发简单Java应用程序,任务三 小试牛刀(学习Java语言基础),任务四 挑战选择(使用分支控制流程),任务五 游戏人生(使用循环控制流程),任务六 回归自然(创建、使用类和对象),任务七 3G时代的消息传递(定义和使用类方法),任务八 保护你的隐私(封装的使用),任务九 子承父业(继承和多态的使用),任务十 上帝万能之手(接口的使用),3,任务十一 用数组存储信息(使用数组),任务十二 使用字符串进行交流(使用字
2、符串),任务十三 防患于未然(捕获并处理异常),任务十四 主动出击(抛出异常),任务十五 认识Java Applet(Applet入门),任务十六 丰富多彩的Applet(在Applet中播放声音和显示图像),任务十七 进入Windows世界(设计图形用户界面),任务十八 布局规划(使用布局管理器),任务十九 事件委托处理(如何处理事件),任务二十 选择之道(使用选择控件和选择事件),目录,4,任务二十一 简明清晰的菜单(使用菜单和其他常用事件),任务二十二 访问数据(使用JDBC连接数据库),任务二十三 访问数据升级(数据库编程),任务二十四 文件管理(目录与文件管理),任务二十五 顺序进出
3、之道(文件的顺序访问),任务二十六 随机进出之道(文件的随机访问),任务二十七 JAVA的分身术(创建和启动线程),任务二十八 线程的生命周期与优先级(线程的状态与调度),任务二十九 基于连接的通信(Java中的套接字Socket),任务三十 基于无连接的通信(Java中的数据报编程),目录,5,任务九 子承父业(继承和多态的使用),2,1,知识目标,能力目标,继承的概念;继承关键字;父类与子类之间的关系,super关键字。多态的概念;静态多态,动态多态;多态的实现。最终类和抽象类。,掌握继承的实现;掌握super关键字;掌握多态的实现。,6,内容提要,4,跟我做:汽车的分类关系,1,2,3,
4、5,实现方案,代码分析,必备知识,动手做一做,7,9.1 跟我做:汽车的分类关系,任务情景汽车是一般的交通工具,具有车类型、品牌、引擎数量、外观颜色等属性,能够发动、加速、刹车、停车等功能。汽车又可分为公共汽车、出租车、卡车等。公共汽车具有自己的第几路编号、最大载客数量属性,能够报站。出租车具有所属公司、最大载客数量属性,能够给乘客打发票。卡车具有最大载重量属性,能够卸货。请编写Vehicle汽车类、Bus公共汽车类。Taxi类和Truck类待学完本任务后自行完成。运行结果,第1章目录,8,问题分析回忆任务六中定义类的三个步骤,先定义类名,再编写类的属性,最后编写类的方法。本任务采用这三个步骤
5、,编写好代码后,我们很快就会发现,Vehicle汽车类和Bus公共汽车类出现了许多相同的语句代码。在属性方面,都包含了车类型、品牌、引擎数量、外观颜色重复的信息定义,在功能上都有发动、加速、刹车、停车等重复的行为定义。汽车、公共汽车的成员变量和成员方法对照请见图9-2。现在,我们换个思路考虑。汽车是一般性的概念,它包含的成员变量和成员方法,在公共汽车、出租车、卡车中也具有,因为公共汽车是一种汽车,出租车、卡车也是一种汽车,只不过公共汽车、出租车、卡车是一种更具体的汽车,除了汽车的公共特性外,还有自己的特有性质。经过分析,采取如下措施,在定义类时,将公共汽车类、出租车类、卡车类中相同的属性和方法
6、抽象出来,集中放在汽车类中,形成一种共享的机制,公共汽车类、出租车类、卡车类中只放自己特有的成员变量和成员方法,减少重复代码。这样的汽车类称为父类,公共汽车类、出租车类、卡车类称为子类。子类继承父类的非私有成员变量和成员方法。,第1章目录,9.2 实现方案,9,解决步骤1.打开Eclipse,在study项目中创建包com.task09,再确定类名Vehicle,得到类的框架。package com.task09;public class Vehicle2.然后,进行类的属性描述,只输入抽象出来的共有的成员变量Stringtype;String brand;int engineNum;Stri
7、ng color;3.接着,定义类的构造方法:public Vehicle()public Vehicle(String type,String brand,int engineNum,String color)4.再定义抽象出来的共有的方法:/发动、加速、刹车、停车public void start()public void accelerate()public void brake()public void stop(),9.2 实现方案,10,5.定义Bus类。Bus类作为更具体的子类,只定义自己特有的性质。父类Vehicle类已有的成员变量和成员方法不再定义。public class
8、Bus extends Vehicle/加上extends关键字和父类名Vehicle/公共汽车具有自己的最大载客数量、第几路编号属性int maxLoad;/特有的成员变量String busNo;/*构造方法*/public Bus()public Bus(int maxLoad,String busNo)/报站public void announceBusStop()/特有的成员方法6.定义VehicleTest测试类,运行程序。对Vehicle类、Bus类的继承关系进行测试,Bus类能否访问父类的成员变量,能否调用父类的成员方法。Bus bus=new Bus(子类公共汽车,女神,2,
9、白色,50,9路);bus.start();/调用父类的成员方法bus.announceBusStop();/公共汽车报站,9.2 实现方案,11,程序代码见书上源码,第1章目录,9.3 代码分析,12,9.3 代码分析,应用扩展Bus类继承了Vehicle类后,在发动、加速、刹车、停车功能上加上自己的特性,就要重写这四个方法。重写形成了多态。Bus类升级新增方法如下:/发动、加速、刹车、停车public void start()System.out.println(type+busNo+brand+engineNum+引擎+color+汽车发动);public void accelerate
10、()System.out.println(type+busNo+brand+engineNum+引擎+color+汽车加速);public void brake()System.out.println(type+busNo+brand+engineNum+引擎+color+汽车刹车);public void stop()System.out.println(type+busNo+brand+engineNum+引擎+color+汽车停车);,第1章目录,13,9.4 必备知识,9.4.1 类的继承1.继承的概念由一个已有类定义一个新类,称为新类继承了已有类。已有类称为父类,新类称为子类。例如,
11、汽车类是父类,公共汽车类、出租车类、卡车类是子类。通过子类继承父类,子类具有父类的一般特性,包括非私有的属性和行为。子类还可以增加自身特性,定义新的属性和行为,甚至可以重新定义父类中的属性和方法,扩展类的功能。例如,汽车类具有车类型、品牌、引擎数量、外观颜色,能够发动、加速、刹车、停车等一般特性。作为子类的公共汽车类、出租车类、卡车类继承了父类的这些特性,另外,新增了自己的特性,公共汽车具有自己的第几路编号、最大载客数量属性,能够报站。出租车具有所属公司、最大载客数量属性,能够给乘客打发票。卡车具有最大载重量属性,能够卸货。公共汽车类还重新定义了父类的发动、汽车公共汽车出租车卡车加速、刹车、停
12、车功能。,第1章目录,图9-2 汽车又可分为公共汽车、出租车、卡车,14,怎样判断类与类之间具有继承关系呢?汽车具有一般特性,公共汽车、出租车、卡车是一种汽车,具有更具体的特性,符合is-a关系。根据这种原则,确定汽车是父类,公共汽车、出租车、卡车是子类。父类更通用、子类更具体。再看一看人、消费者和经销商关系。人具有姓名、年龄属性,能够说话。消费者、经销商是一种人,具有姓名、年龄属性,能够说话。消费者还能够购物、付费,经销商能够进货、收费,具有更具体的特性。符合is-a关系。所以,人是父类,消费者和经销商是子类。,第1章目录,9.4 必备知识,15,2.继承的意义在定义汽车类、公共汽车类、出租
13、车类、卡车类时,通过分析了解到,汽车类和其他车类之间的重复代码太多,具有许多相同的成员变量和成员方法,既增加了程序员的工作量,降低编程效率,也违背了Java语言的“write once,only once”的原则。如果把所有子类中相同的代码都抽取到父类中,建立继承关系,让子类自动继承父类的属性和方法,那么子类中就省去重复代码。例如,在汽车类、公共汽车类、出租车类、卡车类建立了继承关系后,公共汽车类、出租车类、卡车类中相同的代码,包括成员变量定义和方法的定义,抽取到汽车类中,子类中不再进行重复定义,程序的有效实现代码得到复用。因此,使用继承提高代码的复用性。,9.4 必备知识,16,3.继承的实
14、现继承的实现分两个步骤:定义父类父类可以是系统类,也可以是自定义类。如果是系统类,该步骤可以省略。在父类中只定义一些通用的属性与方法,例如:Vehicle汽车类只定义了车类型、品牌、引擎数量、外观颜色属性,以及发动、加速、刹车、停车行为。Stringtype;/车类型、品牌、引擎数量、外观颜色属性String brand;int engineNum;String color;public void start()/发动、加速、刹车、停车行为public void accelerate()public void brake()public void stop(),9.4 必备知识,17,定义子类
15、子类定义格式:类修饰符 class 子类名 extends 父类名extends关键字表示一个类继承了另一个类。例如,Bus公共汽车类继承Vehicle汽车类。public class Bus extends Vehicle/父类名只能有一个然后,定义子类特有的成员变量和成员方法。例如,Bus公共汽车类作为子类,新增了自己的特性。int maxLoad;/子类特有的属性String busNo;public void announceBusStop()/报站,子类特有的方法System.out.println(busNo+公共汽车报站);注意:一个子类只能继承一个父类,即单继承。但一个父类可以
16、有多个子类。,9.4 必备知识,18,改错:下面继承定义有哪些错误?/*人(Person)具有姓名(name)、年龄属性(age),能够说话(talk)。*消费者(Customer)具有姓名(name)、年龄属性(age),能够说话(talk),还能够购物(shop)。*/public class Person String name;int age;public void talk()System.out.println(name+说话);public class person extends Customer,Shop String name;public void talk()Syste
17、m.out.println(name+说话);private void shop()System.out.println(name+购物);提示:有5个错误。,9.4 必备知识,19,4.子类与父类的关系定义子类之后,父类与子类之间就产生了一些特殊的关系,在代码编写上会受到影响,程序员必须清楚。子类自动继承父类的属性和方法,但不能继承访问权限为private的成员变量和成员方法。例如:父类Vehicle中有一私有成员变量和一私有成员方法:private String color;/父类中私有成员变量private void start()/父类中私有成员方法子类Bus中,按如下方式对父类成员变
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 程序设计 任务 驱动 教程 09
链接地址:https://www.31ppt.com/p-5436147.html