06-面向对象:继承和多态解读.ppt

  1. 1、本文档共43页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
06-面向对象:继承和多态解读

《Java程序设计》 上一章内容回顾 5. 面向对象:构造方法,封装与隐藏 构造器 理解构造器 构造器的重载 封装 理解封装 访问控制符 包(package) 包及其作用 package和import语句 Java的常用包 6. 面向对象:继承和多态 6.1 类的继承 6.1.1 继承的特点 6.1.2 重写父类的方法 6.1.3 父类实例的super引用 6.1.4 调用父类的构造器 6.2 多态 6.2.1 多态性 6.2.2 引用变量的强制类型转换 6.2.3 instanceof运算符 6.3 继承和组合 6.4 课后作业 6.1 类的继承 6.1.1 继承的特点 继承是面向对象三大特征之一,也是实现软件复用的重要手段。 Java的继承通过关键字extends来实现,实现继承的类称为子类,被继承的类称为基类、超类、父类。父类与子类的关系,是一种一般和特殊的关系。例如水果和苹果的关系,苹果继承了水果,苹果是水果的子类,则苹果是一种特殊的水果。 因为子类是一种特殊的父类,因此父类包含的范围总比子类包含的范围要大,因此父类是大类,子类是小类。 Java的继承是单继承,每个类最多只有一个直接父类。 6.1 类的继承 6.1.1 继承的特点 Java里子类继承父类的语法格式如下: [修饰符] class subclass extends superclass { //类定义部分 } “extends”的含义是子类扩展了父类,将可以获得父类的全部属性和方法,但子类不能获得父类构造方法。 以下程序示范了子类继承父类的特点。 6.1 类的继承 6.1.1 继承的特点 程序清单:chapter06\test1\Fruit.java、Apple.java 6.1 类的继承 6.1.1 继承的特点 6.1 类的继承 6.1.2 重写父类的方法 子类扩展了父类,子类是一个特殊的父类。大部分时候,子类总是以父类为基础,额外增加新的属性和方法。但有一种情况例外:子类需要重写父类的方法。 例如,鸟类都包含了飞翔(fly)的方法,其中鸵鸟是一种特殊的鸟类,因此鸵鸟应该是鸟的子类,因此它也将从鸟类获得飞翔方法,但这个飞翔方法明显不适合鸵鸟,因此,鸵鸟需要重写鸟类的方法。 下面程序先定义一个Bird类。 6.1 类的继承 6.1.2 重写父类的方法 程序清单:chapter06\test1\Bird.java 6.1 类的继承 6.1.2 重写父类的方法 下面再定义一个Ostrich类,这个类扩展了Bird类,但重写了Bird类的fly方法。 程序清单:chapter06\test1\Ostrich.java 6.1 类的继承 6.1.2 重写父类的方法 这种子类包含父类同名方法的现象被称为方法重写,也称为方法覆盖(Override)。可以说子类重写了父类的方法,也可以说子类覆盖了父类的方法。方法的重写要遵循“两同两小一大” 。 两同: 方法名相同; 形参列表相同。 两小: 子类方法返回值类型应比父类方法返回值类型更小(即子类)或相同; 子类方法声明抛出的异常应比父类方法声明抛出的异常类更小或相同。 一大: 子类方法的访问控制权限应比父类方法更大或相等。 6.1 类的继承 6.1.2 重写父类的方法 注意: 覆盖方法和被覆盖方法要么都是类方法,要么都是实例方法;不能一个是类方法,一个是实例方法,否则编译出错。 当子类覆盖了父类方法后,子类的对象将无法直接访问父类中被覆盖的方法,如果需要访问,可以使用super(被覆盖的是实例方法)或者父类名(被覆盖的是类方法)作为调用者来调用父类被覆盖的方法。 如果父类方法具有private访问权限,则该方法对其子类是隐藏的,因此其子类无法访问该方法,也就无法重写该方法;如果子类定义了一个与父类private方法具有相同方法名、相同形参列表、相同返回值类型的方法,依然不是重写,只是在子类中重新定义了一个新方法。 6.1 类的继承 6.1.3 父类实例的super引用 (1) 通过super引用调用父类被覆盖的方法 如果需要在子类中调用父类被覆盖的实例方法,可以通过关键字super作为调用者来调用父类被覆盖的方法。 super是Java提供的一个关键字,它是直接父类的默认引用。 例如,为上面的Ostrich类添加callOverridedMethod方法,在其中调用Bird类被覆盖的fly方法。 完整的Ostrich类代码如下。 程序清单:chapter06\test1\Ostrich.java 6.1 类的继承 6.1.3 父类实例的super引用 6.1 类的继承 6.1.3 父类实例的super引用 6.1 类的继承 6.1.3 父类实例的super引用 6.1 类的继承 6.1.3 父类实例的super引用

文档评论(0)

shuwkb + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档