网站大量收购闲置独家精品文档,联系QQ:2885784924

Java程序设计-5-继承和接口.ppt

  1. 1、本文档共59页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Java程序设计 第五章 继承、接口 继承是自然界的一种普遍现象。作为面向对象技术的实现,Java提供了通过继承创建新类来实现类的重用,在清晰的描述问题域的层次体系时,继承有着重要的作用。作为系统建模的一种主要原则,理解继承的关键在于能够认识抽象的作用。 本质上接口是一种设计模式,它和继承还有着一定的区别,在开发中它的使用更加频繁。作为本章的另外一个重要内容,类型的转换机制也是需要认真领会的。 学习目标 理解继承的含义以及类的层次关系 理解抽象类和具体类的区别 理解多态的含义以及如何实现多态 理解类型系统 理解接口以及实现接口 理解接口和抽象的区别 理解基本的设计模式和实现 掌握Object类,掌握主要方法的作用 理解对象相等性的判断机制 5.1 类的层次结构 层次是我们生活中经常可见的一种结构。例如一个企业通常有着明晰的组织结构,除了这种组织结构外,另外一种典型的层次结构就是分类结构了,例如有关生物的分类: 在Java语言中,所有的类都有着严格的层次体系,除了根类,每个类都有着唯一的超类 5.2 类的继承 从Java编程语言的角度来看,继承发生在一个被称为“超类”(或者称为“基类”superclass)与一个被称为“子类”(subclass)之间,用extends来实现,如: class ChildClass extends SuperClass{ //... } 这里表示子类ChildClass派生于超类SuperClass。准确的说,我们创建了属于SuperClass类的一个新的子类型。在发生继承关系时,一个子类对于超类的继承表现在以下几个方面: 继承超类的属性 继承超类的方法 使用超类的构造函数 5.2 1.继承超类的属性 一个子类继承超类的属性之后能否使用取决于超类属性的访问属性以及子类和超类所属包的关系,图5-3说明了这个问题。 根据继承规则,如图5-3中显示的那样: 当超类和子类在同一包中时,子类可以继承(既可以直接使用)超类中除private修饰的一切属性 而当超类和子类不在同一个包内时,子类除了超类中用private修饰的属性不能继承外,超类中那些没有明确访问范围的属性也不能被继承。 所以,当明确一个类需要作为基类来使用时,考虑清楚每一个数据成员的访问范围是很重要的。 2.继承超类的方法 子类对于超类方法(不包括超类的构造函数)的继承规则和上述的属性继承规则一样。 在超类中被说明为private的方法不能被子类继承使用, 那些没有说明访问范围的方法,只有当子类和超类在一个包内才可以被继承使用, 除此之外,超类的其它方法都可以被子类继承使用。 3.使用超类的构造函数 构造函数不同于一般的方法,子类无法使用超类的构造函数作为自己的构造函数,子类必须有自己的构造函数。 总结 通过前面的介绍,读者应该已经认识到,一个子类对于自己的超类是完全继承的,但是由于超类的限定,使得子类不能完全使用继承于超类的所有成员。这种情况就好比,当为子类创建一个对象时,这个子类对象的肚子里包含了一个完整的超类对象。那么这个超类对象是在什么地方创建的呢?答案就是在子类的构造函数中。在子类的构造函数中第一条语句必须是调用超类的一个构造函数完成这个创建工作。 一个超类 public class Student { String studentid; //学生编号 String name; //学生姓名 String speciality; //专业 public Student(String studentid, String name) { this.studentid = studentid; this.name = name; } //分配专业 public void assignSpeciality(String speciality){ this.speciality=speciality; } //定义该对象的字符串表示 public String toString(){ return studentid+, +name+, + speciality; } } 一个继承于Student的子类 public class Postgraduate extends Student{ String orientation; //增加了研究方向 public Postgraduate( String studentid, String name, String orientation) { super(studentid, n

文档评论(0)

好文精选 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档