第4章继承与多态课件.ppt

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

第4章 继承与多态 利用继承,可以基于已经存在的类构造新类,还可以在新类中添加一些新的成员或修改继承了的成员,以满足新的需求。 多态是在继承的基础上引出的,可以解决子类父类中的成员重名问题。 4.1 继 承 概 述 在日常生活中,我们常用“是一种(is-a)”关系来组织与表达知识,从而将知识组织成一种有层次、可分类的结构。如陕西红富士苹果是一种红富士苹果,红富士苹果是一种苹果,而苹果又是一种水果,等等。 面向对象程序设计方法将is-a关系引入到程序设计领域,用于描述类与类之间的关系,称之为继承。 如果我们在声明类A时,指明类A继承了类B(类B是一个已定义了的类),则类A 通常就拥有了类B的非私有的成员变量和方法。此时,类B称为类A的父类(superclass),父类也称为超类或基类;类A称为类B的子类(subclass),子类也称为派生类。 继承是一种由已有的类创建新类的机制,是面向对象程序设计的基石之一。 子类继承父类的非私有属性和方法,还可以定义新的属性和方法,改写父类的方法。 继承实际上是存在于面向对象程序中的两个类之间的一种关系。 Java要求每个类都有父类(隐含为java.lang包中的Object类)。 super 是对父类的引用,引用父类的构造方法、父类成员属性和方法。 4.1.1 超类、子类 被继承的类一般称为“超类”或“父类”,继承的类称为“子类”。当子类继承超类时,不必写出全部的实例变量和方法,只需声明该类继承了的已定义的超类的实例变量和方法即可。 继承节省了定义新类的大量工作,可以方便地重用代码。例如,把汽车作为父类,当创建汽车的子类轿车时,品牌、价格、最高时速等属性会自动地被定义,调用刹车方法时会自动调用在汽车类中定义的刹车方法。但一个子类不必非要使用继承下来的属性和方法,一个子类可以选择覆盖已有的属性和方法,或添加新的属性和方法。 4.1.2 继承层次 继承关系可以用树形层次表达出来。 例:汽车类定义了品牌、价格、最高时速等属性(成员变量),以及刹车、启动等方法。当定义继承汽车类的子类卡车时,它自动继承汽车类的属性和方法。 继承只是代码重用的一种方式,滥用继承会造成很严重的后果。只有当需要向新类添加新的操作,并且把已存在类的默认行为融合进新类中时,才需要继承已存在的类。 4.2 Java中的继承 在Java中,实际上所有的类均直接或间接继承自java.lang.Object类,也可以说Object类是Java中的总根类。实际开发中,如不特殊指定,开发人员自己定义的类均直接继承自Object类。 4.2.1 派生子类 创建类时指明它为某存在类的子类 class 子类名 extends 父类名{ 子类类体 } 父类 来自系统类库 用户自定义类 子类将继承除 private 外所有父类成员 Java不支持多重继承(但可用接口实现)。 例4-1: 通过继承来定义类 class Car { int car_number;? void set_number(int car_num) { car_number=car_num; }? void show_number() { System.out.println(我的车号是:+car_number); } } class TrashCar extends Car{ int capacipy;? void set_capacity(int trash_car_capacipy) { capacipy=trash_car_capacipy; }? void show_capacity() { System.out.println(我的容量是:+capacipy+ ); } }? class CarDemo{ public static void main(String args[]) { TrashCar DemoTrashCar=new TrashCar(); DemoTrashCar.set_number(4949); DemoTrashCar.set_capacity(20); DemoTrashCar.show_number(); DemoTrashCar.show_capacity(); } } 4.2.2 继承规则 1.成员变量的继承规则 子类继承那些被声明为public 或protected的父类成员; 子类继承那些未被存取权限修饰符修饰的父类成员,只要该子类与父类在同一个包中; 如果子类声明了一个与父类中的成员同名的成员,则子类不继承父类中的该同名

文档评论(0)

开心农场 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档