第六章深入面向对象的程序设计.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文档。上传文档
查看更多
第六章 深入面向对象的程序设计 6.1 继承与重载 6.1.1 继承关系的定义 Java中的继承是通过extends关键字来实现的。 新定义的类称为子类,它可以从父类那里继承所有的非private的属性和方法作为自己的成员。 见例类Employee、CommonEmployee、ManagerEmployee 6.1.2 属性的继承与隐藏 1.属性的继承 子类可以继承父类非私有的所有属性。 子类可以自己新建一个属于自己的属性。 子类的全部属性=父类继承下来的+自己新建的。 说明: 父类的所有非私有属性实际是各子类都拥有的属性的集合。 子类从父类继承属性不需要把父类属性的定义部分再复制一遍。 优点:减少程序的维护量。 2.属性的隐藏 子类从父类继承来的属性变量重新加以定义,称为属性的隐藏。 见例6.1 TestHide.java 6.1.3 方法的继承、重载和覆盖 1.方法的继承 父类的非私有方法作为类的非私有成员,也可以被子类所继承。 见例6.2 InheritMethod.java 2.方法的覆盖 在子类中定义与父类相同的方法名称,称为方法的覆盖。 见例6.3 OverrideMethod.java 注: 在方法的覆盖中,由于同名方法隶属于不同的类,所以要解决调用如何区分他们的问题,只需要在方法名前面使用不同的类名或不同类的对象名即可。 子类在重新定义父类已有的方法时,应保持与父类完全相同的方法头声明,即应与父类有完全相同的方法名、返回值和参数列表。 3.方法的重载 子类定义同名方法来覆盖父类的方法是面向对象方法中多态技术的一种实现。 所谓多态是指同名的不同方法共存。有助于隐藏对象内部的细节,提高程序的抽象程度,是面向对象程序设计中经常使用的方法。 实现多态技术的另一种重要的手段就是方法的重载。 重载:类对自身已有的同名方法的重新定义。重载与覆盖不同,重载不是子类对父类同名方法的重新定义。 方法的重载是同类中同名方法共存的情况,不能像方法的覆盖那样采用类名前缀来区分,而应该采用通过参数列表来区分不同的方法。 同类中同名的不同方法需要有不同的参数列表,包括参数顺序的不同和参数类型的不同。 6.1.4 父类对象与子类对象的使用与转化 super 和this是常用来指代父类对象和子类对象的关键字。 Java系统默认,每个类都缺省地具有null、this和super三个量,所以在任意类中都可以不加说明而直接使用它们。 null代表“空”,代表一个什么也没有的“空”值,一般用null来代表尚未存在的对象,在定义一个对象但尚未为其开辟内存单元时可以指定这个对象为null。 1.this this表示的是当前对象本身, 更准确地说,this代表了当前对象的一个引用。 对象的引用可以理解为对象的另一个名字,通过引用可以顺利地访问到对象,包括修改对象的属性、调用对象的方法。 this通常用来把当前对象的引用作为参数传递给其他的对象或方法。如: class SecretaryEmployee extends CommonEmployee { //一般雇员的子类:秘书类 SecretaryEmployee(ManagerEmployee boss){ //秘书的构造函数 m_EmpSalary=boss.getSalary()/3; //秘书的薪金是上司的三分之一 } } //雇员的子类2:主管 class ManagerEmployee extends Employee{ SecretaryEmployee m_Secretary; //主管的秘书 ManagerEmployee(Date mgrdate){ //主管的构造函数 m_Secretary=new SecretaryEmployee(this); //每新任命一位主管,都为他指派一名秘书 } } 说明:每新建一个ManagerEmployee对象时,都同时创建一个SecretaryEmployee对象作为其秘书。 2.super super表示的是当前对象的直接父类对象,是当前对象的直接父类对象的引用。 所谓直接父类是相对于当前对象的其他“祖先”类而言。 注意: this和super是属于类的所有特指的属性(即类的成员),只能用来代表当前对象和当前对象的父对象,而不能像其他类的属性一样随意引用。下列都是错误的代码: ManagerEmployee MgrEmp=new ManagerEmployee(); MgrEmp.this.getMinSalary();//Error MgrEmp.super.workDays();//Error 3.父类对象与子类对象的转换 父类对象和子类对象

文档评论(0)

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

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

1亿VIP精品文档

相关文档