Java面向对象编程继承与多态

上传人:宝路 文档编号:47870921 上传时间:2018-07-05 格式:PPT 页数:20 大小:2.55MB
返回 下载 相关 举报
Java面向对象编程继承与多态_第1页
第1页 / 共20页
Java面向对象编程继承与多态_第2页
第2页 / 共20页
Java面向对象编程继承与多态_第3页
第3页 / 共20页
Java面向对象编程继承与多态_第4页
第4页 / 共20页
Java面向对象编程继承与多态_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《Java面向对象编程继承与多态》由会员分享,可在线阅读,更多相关《Java面向对象编程继承与多态(20页珍藏版)》请在金锄头文库上搜索。

1、准备上课了!Java 面向对象高级编程讲师:李志成目录Java 类 对象 引用 回顾1Java 继承2Java多态3类、对象与引用v什么是类(Class)?类是具有相同特性和行为的对象集合;是一种抽象 ,它把一类物体的特征抽象出来,通过适当的数 据类型表示。 v什么是对象(Object)?与类相对而言,类是抽象,对象就是具体。例如: 人就是一个抽象类,而你、我、他就是一个人 的对象。 v什么是引用(reference)?对象的名字,用来操作对象。同一对象可以有多个 应用吗?为什么 需要类?Class:n.班级;上课;等级 阶级;种类 Object:n.物体;客体 对象;目的 目标目录Java

2、类 对象 引用 回顾1Java 继承2Java多态3面向对对象三大特性封装:类就是封装,封装了 属性与方法。它是一种思想 ,其核心就是“暴露出必要 的内容给给外部用,而对对于内 部细节细节 ,使用者不用去关心 ”一切从汽车车开始public class Car public int speed; /in变量,表示汽车沫磨 public String name; /表示汽车名字 public String color; /表示汽车颜 色 public void speedUp(int p_speed) if (p_speed 0) speed += p_speed; public void sl

3、owDown(int p_speed) if (p_speed 0) int tempSpeed = speed - p_speed; if (tempSpeed = 0) speed = tempSpeed; 系统升级:需要支持公交汽车 。 业务点: 1.包含普通汽车所有属性与行 为; 2.增加“最大核载人数”、“当前 旅客总数”属性; 3.增加“上客”、“下客”行为1.增加一个新类类2.修改原来的类类( 选选用此方式)解 决修改原来的Car类类public class Car /省略public boolean isBus; / 下面是专门为 公共汽车增加的三 个属性public int

4、max_Passenger = 35;public int current_Passenger = 0;/ 专门为 公共汽车增加的方法,完成旅客上车的功能public boolean getOnBus(int p_amout) if (isBus) /省略return false;/ 专门为 公共汽车增加的方法,完成旅客下车的功能public boolean getDownBus(int p_amout) if (isBus) /省略return false; 系统升级:需要支持跑车。 业务点: 1.包含普通汽车所有属性与行 为; 2.增加“氮气含量” 属性; 3.增加“使用氮气加速”行为1.

5、增加一个新类类2.修改原来的类类解 决到底有多少种 类型的车需要 支持?一类车类车 一个类类一类车类车 一个类类问题提出: 1.一个类表示所有的汽车类型,需要穷 举所有汽车的属性与方法; 2.一个类表示一个汽车类型,当需要修 改的时候需要修改所有的类。使用继继承问题问题 引刃而解public class CarBase public int speed;public String name;public String color;public int maxSpeed = 0;int tempSpeed = 0;if (p_speed 0) tempSpeed = speed + p_spee

6、d;if (tempSpeed 0) int tempSpeed = speed - p_speed;if (tempSpeed = 0) speed = tempSpeed; public class Bus extends CarBasepublic int max_Passenger = 35;/ 只需包含Bus 特有的属性public int current_Passenger = 0;/ 只需包含Bus特有的方法public boolean getOnBus(int p_amout) if (isBus)/省略return false; public class SportsCar

7、extends CarBasepublic int nAmount = 90;/ 保存氮气的剩余量/ 使用氮气来让汽车加速的方法public void speedUpUsingN(int p_amout) /省略/ 增加氮气public void addN(int p_amout) /省略 子类继承了父类的属性和方法继继承v继继承的语语法格式: 子类类类类 名 + extends + 父类类类类 名 vJava在创创建一个子类类的对对象的同时时,也创创造了 其父类类的一个对对象 v子类继类继 承了父类类的属性与方法,但唯一没有直接 继继承的是父类类的构造方法 vJava中的单继单继 承 v万类

8、类之组组java.lang.Object类类 所有类类都继继承自O伪伪装 与 反伪伪装public class AutoConversion public static void main(String args) SportsCar sportsCar = new SportsCar(); / (1)创建了一个SportsCar 类的对象CarBase carBase = sportsCar;/ (2)使用强制类型转换carBase.speedUp(77);/ (3)使用carBase调用speedUp方法System.out.println(“carBase.speed的值为 :“ + c

9、arBase.speed);/ (4) / 输出speed属性的值System.out.println(“sportsCar.speed的值为 :“ + sportsCar.speed);sportsCar.speedUpUsingN(77);/ (5)使用sportsCar调用 speedUpUsingN方法System.out.println(“carBase.speed的值为 :“ + carBase.speed);/ (4)/ 输出speed属性的值System.out.println(“sportsCar.speed的值为 :“ + sportsCar.speed); 伪伪装 与 反

10、伪伪装public class ForceConvertion public static void main(String args) SportsCar SportsCar = new SportsCar();/ (1) CarBase base = SportsCar;/ (2) System.out.println(“尝试 将base引用强制类型转换为 SportsCar类的引用 “); SportsCar converted = (SportsCar) base;/ (3) System.out.println(“转换 成功!“); System.out.println(“使用con

11、verted调用addN方法“); converted.addN(45);/ (4) System.out.println(“converted.nAmount的值为 :“ + converted.nAmount); AutoConversion asdf = null; System.out.println(“使用converted给Object类的引用objCar赋值 “); Object objCar = converted;/ (5) System.out.println(“将Object类引用强制类型转换为 CarBase类引用“); CarBase base2 = (CarBase

12、) objCar;/ (6) System.out.println(“将Object类引用强制类型转换为 SportsCar类引用“); SportsCar sports2 = (SportsCar) objCar;/ (7) 遵守语语法 正确转换转换v一个子类类的引用可以用来给给父类类引用赋值赋值 ,而无 需强制转换转换 ; v引用类类型决定可以调调用对对象的哪个方法,访问对访问对 象哪些属性 v子类类引用=(子类类)父类类引用继继承后的覆盖(Override)系统升级: 1.为了乘客的安全,公共汽车需要在减速的时候保证一 次减速的值不能超过某个限定值。以内,因为如果速度 降得太快,站着的乘

13、客可能因为惯性而跌倒; 2.对于跑车的加速方法,可以设定加速的时候就使用指 定数量的氮气,以缩短加速所需时间。public class SportsCar extends CarBase /省略public void speedUp(int p_speed) / (1)SportsCar类特有的 speedUp方法/省略/省略 覆盖是如何执执行的?v 必须须找到符合方法签签名的方法,这这个 和方法名、方法形参和方法实实参之间间 的类类型匹配等都有关系,这这个详细详细 的 过过程在学习习方法的时时候已经讲经讲 述过过, 这这里不再赘赘述。 v Java平台会首先根据在对对象的实际实际 所属的类类

14、中寻寻找符合方法签签名的方法 ,如果找不到,则则去它的父类类中寻寻找 符合方法签签名的方法,如果再找不到 ,则则去它父类类的父类类中寻寻找符合方法 签签名的方法,一直到找到为为止。找到 后,就执执行找到的方法。多态态:Overload public void setCar(CarBase car) System.out.println(“setCar(CarBase)方法被调用了“);this.car = car;public void setCar(ElectronicBus bus) System.out.println(“setCar(ElectronicBus)方法被调用了“);thi

15、s.car = bus; 重载载方法的调调用public class UseOverLoad public static void main(String args) UseCar useCar = new UseCar();CarBase base = new CarBase();SportsCar sports = new SportsCar();Bus bus = new Bus();ElectronicBus eBus = new ElectronicBus();useCar.setCar(base);useCar.setCar(sports);useCar.setCar(bus);useCar.setCar(eBus); public class UseOverLoadII public static void main(String args) UseCar useC

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

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