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

第3章 继承和多态.ppt

  1. 1、本文档共81页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第三章 继承与多态 目录 3.1 类的继承 3.2 对象的上转型对象 3.3 多态性 3.4 abstract 类和abstract方法 3.5 super关键字 3.1 类的继承 继承是一种由已有的类创建新类的机制。 利用继承,我们可以先创建一个共有属性的一般类,根据该一般类再创建具有特殊属性的新类,新类继承一般类的状态和行为,并根据需要增加它自己的新的状态和行为。 继承——相关的几个概念 基类(base class) 也称超类(super class)或父类(parent class),是被直接或间接继承的类 派生类(derived-class) 也称子类 (sub class),是继承自其他类而得到的类 继承所有祖先的属性和行为,也可以增加变量和方法,也可以覆盖(override)继承的方法 子类对象与父类对象存在“is a”或者“is a kind of” 的关系 例如:公司中,有职员(Employee)及管理人员(Magager)两类人员,管理人员是职员,但具有不同于一般职员的属性 职员对象(Employee)可能有的属性信息包括: 员工号(employeeNumber) 姓名(name) 地址(address) 电话号码(phoneNumber) 管理人员(Manager)除具有普通员工的属性外,还可能具有下面的属性 职责(responsibilities) 所管理的职员(listOfEmployees) 继承——Employee与Manager 继承——直接/间接继承举例 Java继承性的特点: 通过继承,新类拥有已有类的所有功能 Java只支持类的单继承,即:每个子类只能有一个直接父类 继承机制可以提高程序的抽象程度,提高代码的可重用性 1、子类 在类的声明中,通过使用关键字extends来创建一个类的子类,格式如下: class 子类名 extends 父类名 {… } 例如: class Student extends People {… } 注意: 如果一个类的声明中没有使用extends关键字,则系统默认其为Object类的子类 Object是java.lang包中的类,不需使用import显式引入 补充:Object类 Object类 Java中所有类的直接或间接父类,处在类层次最高点 包含了所有Java类的公共属性,其构造方法是Object() Object类定义了所有对象必须具有的状态和行为,其中主要的方法如下: public final Class getClass() 获取当前对象所属的类信息,返回Class对象 public String toString() 返回当前对象本身的有关信息,按字符串对象返回 public boolean equals(Object obj) 比较两个对象是否是同一对象,是则返回true Object——getClass方法 返回一个Class对象,用来代表对象隶属的类 通过Class 对象,可以查询Class对象的各种信息:比如该类的名字,基类,有哪些成员等。 void PrintClassName(Object obj) { System.out.println(The Objects class is + obj.getClass().getName()); } 相等和同一的概念 两个对象具有相同的类型及相同的成员值,则称二者相等(equal) 如果两个引用变量指向的是同一个对象,则称这两个变量同一(identical) 如果两个对象同一,则肯定相等;但如果两个对象相等,则不一定同一 比较运算符“==” 判断的是这两个对象是否同一 例:使用“==”判断同一对象 例子:人物 class 人物 { double 身高; double 体重; } 例:修改代码后执行 例子:人物 class 人物 { double 身高; double 体重; } Object——equals方法 由于Object是所有类的父类,因此其所有子类都继承了equals()方法 Object类中的 equals() 方法的定义如下: public boolean equals(Object x) { return this == x; } 可见,equals也是判断两个对象是否同一 equals方法——举例 例子:人物 class 人物 { double 身高; double 体重; } equlas方法——重写问题 问题:为什么String类的equals方法可以判断“相等”? String类中已经重写了Object类的equals方法,可以判别两个字符串

文档评论(0)

0520 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档