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

    【教学课件】第4章继承与多态.ppt

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

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

    【教学课件】第4章继承与多态.ppt

    第4章 继承与多态,上一章主要阐述了类和对象的概念。本章将学习面向对象程序设计中两个重要的概念继承和多态。利用继承,可以基于已经存在的类构造新类,还可以在新类中添加一些新的成员或修改继承了的成员,以满足新的需求。而多态是在继承的基础上引出的,可以解决子类父类中的成员重名问题。,4.1 继 承 概 述,利用继承可以很好地实现代码重用问题。在利用已有的类构造新类时,新类保留已有类的属性和行为,并可以根据要求添加新的属性和行为。例如,卡车具有一般汽车的属性,而特有的属性就是载货。在第3章中,曾经介绍过类之间的关系:“USES-A”关系、“HAS-A”关系、“IS-A”关系。其中,“IS-A”关系是继承的一个特征。,4.1.1 超类、子类,被继承的类一般称为“超类”或“父类”,继承的类称为“子类”。当子类继承超类时,不必写出全部的实例变量和方法,只需声明该类继承了的已定义的超类的实例变量和方法即可。超类、子类是继承中非常重要的概念,它们形象地描述了继承的层次关系。继承节省了定义新类的大量工作,可以方便地重用代码。例如,把汽车作为父类,当创建汽车的子类轿车时,品牌、价格、最高时速等属性会自动地被定义,调用刹车方法时会自动调用在汽车类中定义的刹车方法。但一个子类不必非要使用继承下来的属性和方法,一个子类可以选择覆盖已有的属性和方法,或添加新的属性和方法。,4.1.2 继承层次,继承关系可以用树形层次表达出来。为汽车类的继承层次关系,注意,汽车类定义了品牌、价格、最高时速等属性(成员变量),以及刹车、启动等方法。当定义继承汽车类的子类卡车时,它自动继承汽车类的属性和方法。继承只是代码重用的一种方式,滥用继承会造成很严重的后果。只有当需要向新类添加新的操作,并且把已存在类的默认行为融合进新类中时,才需要继承已存在的类。,4.2 Java中的继承,在Java中,实际上所有的类均直接或间接继承自类,也可以说Object类是Java中的总根类。实际开发中,如不特殊指定,开发人员自己定义的类均直接继承自Object类。,4.2.1 派生子类,在Java中,类的继承通过entends关键字实现。在创建新类时,使用extends指明新类的父类,具体语法如下。class 子类名 extends 父类名 子类类体,4.2.2 继承规则,当类B成功继承类A后,就涉及到成员变量的继承问题。下面将从两个方面介绍成员变量继承的相关知识,主要包括成员变量的继承规则与成员变量的隐藏。1成员变量的继承规则2成员变量的隐藏对于成员变量来说,当子类本身具有与继承自父类的成员变量名称相同的成员变量时,便构成了成员变量的隐藏。其含义是,在子类中直接调用该成员变量时,将调用的是子类中本身具有的成员变量,而不是从父类继承的成员变量,,4.2.3 方法的继承与覆盖,在类继承机制中,方法的继承和覆盖是其核心内容之一。方法继承允许子类使用父类的方法,而覆盖是在子类中重新定义父类中的方法,更显示了继承的灵活性。1方法的继承从本质上讲,方法也是一种成员,因此继承规则与成员变量的继承规则完全一样,其是否能被继承同样取决与访问限制。2方法的覆盖子类的自身方法中,若与继承过来的方法具有相同的方法名,便构成了方法的重写(有的资料称之为方法的覆盖)。重写的主要优点是能够定义各子类的特有行为,,4.2.4 this与super,在Java中,this和super与继承是密切相关的。this常用来引用当前对象,而super常用来引用父类对象。1this方法中的某个对象与当前对象的某个成员有相同的名字,这时为了不至于混淆,可以使用this关键字来指明要使用某个成员,使用方法是“this.成员名”,即使用this隐式地引用对象的实例变量和方法。2supersuper用来引用父类的成员,包含父类的构造函数、属性以及方法。使用方法为super变量名或super.方法名(实参)。,4.3 强制类型转换,在前面的章节中曾经介绍过,将一个类型强制转换为另一个数据类型的过程称为强制类型转换。本节中的强制类型转换只在继承过程中发生引用类型转换,而不是基本数据类型的转换。引用类型转换指对象引用的强制类型转换,在学习对象引用的强制类型转换之前,先介绍一下对象引用能指向什么样的对象。通过前面几章的学习,可以知道不管什么类型的对象引用,均能指向其自身类型的对象实例,下面的代码说明了这个问题。1/汽车类型的引用c指向汽车类型的对象2Car c=new Car();3/卡车类型的引用t指向卡车类型的对象,4.4 动 态 绑 定,所谓的动态绑定,通俗的就是指,对象在调用方法的时候能够自己判断该调用谁的方法。所以动态绑定一般发生在继承、方法重载时。那么发生方法重载时,编译器如何确定调用的方法呢?例如,调用c.f(arg)时,首先需要将c声明为B类的对象。此时,如果在B类中,存在多个f方法,只是f的参数类型不同,调用f(int)或者f(String)时,编译器逐一列举B类中所有名为f的方法以及B类超类中访问权限为public的名为f的方法。如果存在与c.f(arg)中arg类型相匹配的方法,那么就调用这个方法。由此,调用哪个方法依赖于隐式参数的实际类型。这个过程可以就是一个动态绑定的过程。,4.5 终止继承:Final类和Final方法,关键字Final不但可以用来修饰变量,而且对类及其方法的继承也有很大的影响,本节将从类与方法两方面介绍final关键字的功能。,4.5.1 Final类,当关键字final用来修饰类时,其含义是该类不能再派生子类。换句话说,任何其他类都不能继承用final修饰的类,即使该类的访问限制为public类型,也不能被继承;否则,将编译报错。那么什么时候应该使用final修饰类呢?只有当需要确保类中的所有方法都不被重写时才应该建立最终(final)类,final关键字将为这些方法提供安全,没有任何人能够重写final类中的方法,因为不能继承。,4.5.2 Final方法,当用final关键字修饰方法后,该方法在子类中将无法重写,只能继承,下面的代码说明了这个问题。要恰当使用final的方法,只有在子类覆盖某个方法会带来问题时,再将此方法设为final的方法,一般情况下可以不必使用。因为防止子类覆盖会失去一些面向对象的优点,包括通过覆盖实现的可扩展性。,4.6 抽 象 类,在现实世界中,当人们认识世界时,也会把现实世界很多具有相同特征的事物归为一个抽象类。例如,水果是很多种具体植物果实的总称(抽象类),当需要拿出一个水果的实例时,拿出来的不是苹果就是香蕉等具体种类的实例,拿不出只是水果的实例。在需要一个抽象类实例时,只能用某个具体类的实例来代替。Java是用来抽象和描述现实世界的,因此也提供抽象类,并且其永远不能实例化,其唯一用途是用于继承扩展,这与人们认识现实世界的方式是相同的。本节介绍抽象类和抽象方法。,4.6.1 抽象类,如果从上而下观察类的层次结构,位于上层的类更具有通用性。一般情况下,人们这将这些通用的类作为派生其他类的基类。在Java中,可以使用abstract关键字声明抽象类和抽象方法。下面的例子将Car类声明为抽象类。Car类表示轿车,里面有3个成员变量,分别表示所有轿车都有的价格、品牌、最高时速等属性。,4.6.2 抽象的方法,抽象方法充当着占位的角色,其具体实现在子类中。抽象方法是只有方法声明,没有方法体,使用abstract关键字来声明的方法。因为抽象方法没有方法体,用分号表示声明结束,下面给出了抽象方法的声明。public abstract void startup(),4.7 多 态,前面介绍继承与覆盖以及强制类型转换时都曾提及“多态”的概念。多态性(Polymorphism)在实际中的含义就是不同的对象有相同的轮廓或形态,但具体执行的过程却大相径庭。例如,驾驶员在开车时都知道“遇到红灯时刹车”,这与驾驶员驾驶的是什么型号的车无关,所有的车都具有相同的轮廓或形态的刹车。在Java开发中,基于继承的多态就是指对象功能的调用者用超类的引用来进行方法调用。这样,可以提高灵活性,因为用超类的引用能调用各种不同的子类实现,就像汽车驾驶员可以开各种不同的汽车一样。,4.8 所有类的超类:Object类,Java中的所有类都直接或间接继承自Object类,因此Object类具有的功能所有的类都具有。本节将对Object类当中的一些重要的方法进行介绍,主要包括toString、equals与hashCode方法。1toString方法toString方法是Object中的重要方法之一,该方法将返回此对象的字符串表示,以便在实际运行或调试代码时可以获取字符串表示的对象状态信息,下面给出了该方法的定义形式。,4.8 所有类的超类:Object类,2equals方法的意义前面介绍比较两个String的类内容是否相同时,使用了equals方法。其实,equals方法都是来自Object类的,String类对其进行了重写以满足比较字符串内容的要求。Object类中设计这个方法就是为了让继承它的类来重写,以满足比较不同类型对象是否等价的要求。在Object类中,该方法的实现相当于如下代码。1public boolean equals(Object obj)23return(this=obj);4,4.9 小结,本章首先介绍了Java的一项基本特性继承,及其具体的实现方法。然后介绍了成员变量与方法的继承、方法的重载、final与abstract的类与方法,最后讨论了基于继承的多态在Java中的实现。通过本章的学习,为读者后面学习更多其他面向对象的知识打下了良好的基础。,

    注意事项

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

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




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开