欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

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

    • 资源ID:6510325       资源大小:854.50KB        全文页数:20页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

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

    准备上课了!,Java 面向对象高级编程,讲师:李志成,继承与多态,目录,类、对象与引用,什么是类(Class)?类是具有相同特性和行为的对象集合;是一种抽象,它把一类物体的特征抽象出来,通过适当的数据类型表示。什么是对象(Object)?与类相对而言,类是抽象,对象就是具体。例如:人就是一个抽象类,而你、我、他就是一个人的对象。什么是引用(reference)?对象的名字,用来操作对象。同一对象可以有多个应用吗?,为什么需要类?,Class:n.班级;上课;等级 阶级;种类Object:n.物体;客体 对象;目的 目标,目录,面向对象三大特性,封装:类就是封装,封装了属性与方法。它是一种思想,其核心就是“暴露出必要的内容给外部用,而对于内部细节,使用者不用去关心”,立即进入面向对象的继承与多态世界,一切从汽车开始,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 slowDown(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 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.增加一个新类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_speed;if(tempSpeed 0)int tempSpeed=speed-p_speed;if(tempSpeed=0)speed=tempSpeed;,public class Bus extends CarBase public int max_Passenger=35;/只需包含Bus特有的属性 public int current_Passenger=0;/只需包含Bus特有的方法 public boolean getOnBus(int p_amout)if(isBus)/省略 return false;,public class SportsCar extends CarBase public int nAmount=90;/保存氮气的剩余量/使用氮气来让汽车加速的方法 public void speedUpUsingN(int p_amout)/省略/增加氮气 public void addN(int p_amout)/省略,子类继承了父类的属性和方法,继承,继承的语法格式:子类类名+extends+父类类名Java在创建一个子类的对象的同时,也创造了其父类的一个对象子类继承了父类的属性与方法,但唯一没有直接继承的是父类的构造方法Java中的单继承万类之组类所有类都继承自Object,伪装 与 反伪装,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的值为:+carBase.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);,伪装 与 反伪装,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(使用converted调用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)objCar;/(6)System.out.println(将Object类引用强制类型转换为SportsCar类引用);SportsCar sports2=(SportsCar)objCar;/(7),遵守语法 正确转换,一个子类的引用可以用来给父类引用赋值,而无需强制转换;引用类型决定可以调用对象的哪个方法,访问对象哪些属性子类引用=(子类)父类引用,继承后的覆盖(Override),系统升级:1.为了乘客的安全,公共汽车需要在减速的时候保证一次减速的值不能超过某个限定值。以内,因为如果速度降得太快,站着的乘客可能因为惯性而跌倒;2.对于跑车的加速方法,可以设定加速的时候就使用指定数量的氮气,以缩短加速所需时间。,当方法不再通用,覆盖是如何执行的?,必须找到符合方法签名的方法,这个和方法名、方法形参和方法实参之间的类型匹配等都有关系,这个详细的过程在学习方法的时候已经讲述过,这里不再赘述。Java平台会首先根据在对象的实际所属的类中寻找符合方法签名的方法,如果找不到,则去它的父类中寻找符合方法签名的方法,如果再找不到,则去它父类的父类中寻找符合方法签名的方法,一直到找到为止。找到后,就执行找到的方法。,形参&实参,多态:Overload&Override,什么是Overload?类中的两个或者多个方法,如果它们有相关的方法名,但是却又不同的方法签名,那么这几个方法就是重载。为什么使用Overload?让类变得更灵活。,public class UseCar public CarBase car;public void setCar(CarBase car)System.out.println(setCar(CarBase)方法被调用了);this.car=car;public void setCar(ElectronicBus bus)System.out.println(setCar(ElectronicBus)方法被调用了);this.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 useCar=new UseCar();CarBase base=new CarBase();useCar.setCar(base);base=new SportsCar();useCar.setCar(base);base=new Bus();useCar.setCar(base);base=new ElectronicBus();useCar.setCar(base);,当继承被引入到重载的参数中时,决定函数重载的哪个方法被调用的是实参。这里的实参指的是引用的类型,而不是引用指向对象的类型,Class类与instanceof运算符,Class是不是一个关键字instanceof对象的引用 instanceof 类名,面向对象三大特性,类就是封装,封装了属性与方法。它是一种思想,其核心就是“暴露出必要的内容给外部用,而对于内部细节,使用者不用去关心”,提供了一种可以让我们以一种“与现实中的逻辑相近的方式”构建自己的类和代码。,伴随继承而来,包括重载与覆盖。让“具体执行哪个方法”的问题上给予编程者足够大的灵活性。,

    注意事项

    本文(Java面向对象编程-继承与多态.ppt)为本站会员(小飞机)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开