JAVA继承与多态.pptVIP

  1. 1、本文档共55页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第 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 域 的 继 承 子类继承(拥有)父类的所有非私有 域 的 隐 藏 子类重新定义一个从父类继承来的域变量(可以具有不同类型),称为域的隐藏(指新定义的域变量隐藏了父类的同名变量)。 例子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):子类重新定义与父类同名的方法(指非静态方法,要求方法名、返回值和参数列表完全相同); 如果子类的非抽象方法覆盖了父类的抽象方法,称子类“实现”了父类的抽象方法。 重载(overload): 对于类的方法,如果有两个方法的方法名相同,但参数不同,则一个是另一个的重载方法。 方法的继承与覆盖、重载(2) 方法覆盖和重载的异同 相同点:方法同名。 不同点: 覆盖要求方法签名一致,而方法重载要求参数签名必须不一致。 覆盖要求返回类型一致,而方法重载不要求。 覆盖用于子类覆盖父类方法,而方法重载用于同一个类的所有方法。 方法的继承与覆盖、重载(3) 覆盖方法时要注意: 子类方法不能缩小父类方法的访问权限。如 public class Base{ public void method(){…….}} class Sub extends Base{ private void method(){……}}//编译错误 例子5-3:TestOverLoad.java 在例子5-2的基础上,增加一个方法getBalance(),与父类同名,返回值相同。 对于同一条语句:my200.getBalance(),例子5-2的结果和例子5-3的结果是否相同? 方法的继承与覆盖、重载(4) 重载:不是子类对父类同名方法的重新定义,而是类对自身已有的同名方法的重新定义。 优点: 1)提高程序的简洁性; 2)降低了类和程序模块之间的耦合性。 P121例子5-10:TestOverride.java 问题:这个例子是重载还是覆盖?在哪两个函数体现? line51 / boolean performDial() line63/ boolean performDial(long cn, int pass) this 对当前对象的引用; 作用: 1)调用当前对象的方法或域; 如:class Point { int x = 0, y = 0 ; void move(int x, int y) {

文档评论(0)

wuyoujun92 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档