第章继承与多态.pptVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第章继承与多态.ppt

第 5 章 继承与多态 主要内容: 继承 多态 接口和包 5.1 继 承 继承是面向对象的最重要的特色,继承的方法给编程能带来什么好处? 继承的优点、目的 优点:更有效地组织程序结构,明确类间关系; 目的:使程序结构清晰,提高开发效率,降低编码和维护工作量。 深入理解继承概念 面向对象中的继承是一个基于分类学的概念,继承描述的是一种“is a”的关系。子类是父类在同一个分类分支上的一个更为特殊的类,只有当类之间存在的是一种能够被描述为:“子类 is a 父类”的时候,我们才使用继承。 5.2 类的继承 继承:用extends关键字来表示,子类继承了父类的哪些东西,分两种情况: 当子类与父类在同一个包中,子类继承父类的public、protected和默认访问的成员变量和成员方法。 当子类与父类在不同包中,子类继承父类的public、protected访问的成员变量和成员方法。 单重继承:一个类只能有一个父类(Java) 多重继承:一个类可以有多个父类(Java不支持) 派 生 子 类 《例5-1》实现图5-1的继承结构。 abstract class PhoneCard abstract class None_Number_PhoneCard extends PhoneCard abstract class Number_PhoneCard extends PhoneCard class magCard extends None_Number_PhoneCard class IC_Card extends None_Number_PhoneCard class IP_Card extends Number_PhoneCard class D200_Card extends Number_PhoneCard 域 的 继 承 子类继承(拥有)父类的所有非私有 域 的 隐 藏 分析D200_Card拥有的域和方法。 D200_Card my200 = new D200_Card(); my200.balance; //间接继承自PhoneCard类 my200.cardNumber,….my200.connect //直接继承自Number_PhoneCard类 my200.additoryFee //自己的特征 my200.getBalance(); //间接继承自PhoneCard类 my200.performDial(); //实现了父类的抽象方法 D200_Card能否定义与父类同名的变量,比如balance 子类重新定义一个从父类继承来的域变量(可以具有不同类型),称为域的隐藏(指新定义的域变量隐藏了父类的同名变量)。 例子5-2 : TestHiddenField.java 例5-1中 class D200_Card extends Number_PhoneCard { double additoryFee; boolean performDial() { if( balance (0.5 + additoryFee )) { balance -= (0.5 + additoryFee); return true; } else return false; } } My200.balance=50.0; My200.getBalance(); My200.performDial(); 要点: 1)被隐藏的父类域在子类对象中仍占有独立的内存空间; 2)子类可通过 super 关键字或继承自父类的方法访问或处理继承自父类的域。 方法的继承与覆盖(1) 继承:子类可继承父类的所有非私有方法; 覆盖(override):子类重新定义与父类同名的方法(指非静态方法,要求方法名、返回值和参数列表完全相同); 如果子类的非抽象方法覆盖了父类的抽象方法,称子类“实现”了父类的抽象方法。 为什么需要覆盖? 超类里的方法不一定适用于子类,比如Employee类派生出Manager类,Manager类的计算薪资的方法与Employee类不同,所以需要覆盖父类方法。 例子5-3:TestOverLoad.java 在例子5-2的基础上,增加一个方法getBalance(),与父类同名,返回值相同。 对于同一条语句:my200.getBalance(),例子5-2的结果和例子5-3的结果是否相同? 例子5-2中的my200.getBalance()是继承父类的方法,返回的父类的balance。 例子5-3中的my200.getBalance()是覆盖的父类的方法,返回自己的b

文档评论(0)

基本资料 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档