Java 第6章 类扩展-1.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文档。上传文档
查看更多
Java 第6章 类扩展-1

第六章 类的扩展;两个类,C和C’,有下述3种关系(类C特定,类C’正在创建) 当构造一个新类C’时,它可选择扩展一个已有的类C,如表中1所示。 类C是否允许扩展,或类C如何继承C’的特征,取决于两者间的约定。 若扩展成功,子类将继承超类的约定。 虽然子类可改变一些具体的实现方式,但是子类不能与超类约定相冲突。 引入超类的原因: 减少代码的编写 可大大减少在程序中查找和修改错误的工作;6.1 扩展类举例 6.2 扩展类中的构造器 6.3 方法的改写(override)和域的隐藏 6.3.1 方法的改写 6.3.2 域的隐藏 6.3.3 访问继承成员 6.3.4 可访问性与改写 6.3.5 隐藏静态成员 6.3.6 super关键字;6.1 扩展类举例;6.1 扩展类举例;6.1 扩展类举例;6.1 扩展类举例;6.1 扩展类之例;子类实例的任何一个对象必然可用于代替超类实例的那个对象。 子类对象可被当作一个参数传递到想要得到超类参数的任何方法。 通常超类对象不会被分配给一个子类对象。 原因:子类对象的字段可能比其超类对象的字段多,子类方法需要访问这些字段。如果这些字段是不可访问的,那么就会产生一个运行时错误。;超类;如果用super( ),必须是新构造器的第一条语句。;创建一个对象时,对象的初始化过程为: 对象的各个域根据其类型被设置为相应的缺省初始值。 数字:0;char:\u0000;boolean:false;对象引用:null 调用构造器 调用超类的构造器 (向上调用) 由初始化语句(等号赋值语句)或初始化块对各域进行初始化 执行本类构造器的程序体 ;;注意 构造器执行完毕总是返回对新对象的引用 构造器可以调用方法,但是方法中不能通过this(实参)或super(实参)来调用构造器语句。 构造器不是方法,不能被继承。;方法的名复用(overload):用相同的名字提供多个方法,使用不同的基调区分。 方法的改写(override):子类用自己的实现来替代超类的实现,基调和返回值必须相同。 仅有非静态(non-static)的方法可被改写。 可使用super引用来访问超类中的被改写的方法。;6.3 方法的改写和域的隐藏 6.3.1 方法的改写;域:子类中的域与超类中某域若同名,则子类域将隐藏超类域,但并不是替代或改写超类域。 在子类的一个对象中,仍然包含有超类域,但子类域会隐藏超类域 对象引用.方法名(实参):该对象的实际类型决定了被调用方法的版本。 对象引用.域名:该对象引用的说明类型决定了被访问域的版本。 决定:确定一个查找的起始位置,即从某类的位置开始向上查找。;访问子类中已重新定义过的对象成员。 对象引用.方法名(实参):该对象的实际类型决定了被调用方法的版本。在方法内部,对域的访问总是指向本类中所说明的域,如果本类中未说明,则会向超类查找。 对象引用.域名:该对象引用的说明类型决定了被访问域的版本。 决定:确定一个查找的起始位置,即从某类的位置开始向上查找。;;只有可访问的方法才能被改写。 如果某方法不可访问,就不能被扩展,因而也就不能被改写。 例如,private方法在类之外是不可访问的,如果子类碰巧又定义了一个与超类中某个私有方法具有相同基调和返回类型的方法,它们实际上毫不相干——子类中的方法并未改写超类中的私有方法。;类中的静态成员是不能改写的,当发生重名时总是被隐藏的——不论是域还是方法。//子类隐藏不能起什么作用。 如果通过引用来访问静态成员,那么总是基于该引用的说明类型,而不是引用所指对象的类型来确定。;在扩展类的所有非静态方法中均可使用super关键字。 super是超类一个实例的引用。 super.method总是调用其超类的方法(method)实现。

您可能关注的文档

文档评论(0)

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

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

版权声明书
用户编号:8000054077000003

1亿VIP精品文档

相关文档