第六章类的继承性 ì 课程内容:父类与子类、方法覆盖、0 bject类、设计 C常用修饰符、多态与对象转型、接口、内部类、程序 开发与类设计 ■授课时间:2006/03/21 ■教学目标:了解继承的基本概念,掌握在现有类基础 上如何构建新类,掌握多态、动态绑定以及抽象类的 概念和使用,了解0 bject类的作用和使用方式,以及 如何设计类 烟 重点:继承的概念,多态、动态绑定、Object类, Class类的应用 ■教学方法:讲授 ■教学过程: (省略) ©2005计算机系杨群 All rights lefts reserved
©2005 计算机系 杨厚群 All rights & lefts reserved. 课程内容: 父类与子类、方法覆盖、Object类、设计 c常用修饰符、多态与对象转型、接口、内部类、程序 开发与类设计 授课时间:2006/03/21 教学目标:了解继承的基本概念,掌握在现有类基础 上如何构建新类,掌握多态、动态绑定以及抽象类的 概念和使用,了解Object类的作用和使用方式,以及 如何设计类 重点:继承的概念,多态、动态绑定、Object类、 Class类的应用 教学方法:讲授 教学过程:(省略) 第六章 类的继承性
继承 ■扩展类 “is-a关系是继承的特点,子类功能多于父 类 例: class Cylinder extends Circle 设计类时,应把最通用的方法放在父类中,专 用方法放在子类中 ©2005计算机系杨厚群 All rights lefts reserved
©2005 计算机系 杨厚群 All rights & lefts reserved. 继承 扩展类 “is-a ”关系是继承的特点,子类功能多于父 类 例: class Cylinder extends Circle { . } 设计类时,应把最通用的方法放在父类中,专 用方法放在子类中
父类与子类 父类 Circle Circle Methods Circle Data 继承 子类 Cylinder Circle Methods Circle Data Cylinder Methods Cylinder Data 父类 子类 Circle Cylinder UML图 -radius -length +getRadius -setRadius -getLength -findArea -setLength -findVolume ©2005计算机系杨厚群 All rights lefts reserved
©2005 计算机系 杨厚群 All rights & lefts reserved. 父类与子类 父类 Circle Circle Methods Circle Data 继承 Cylinder Circle Methods Cylinder Methods Circle Data 子类 Cylinder Data Circle -radius +getRadius +setRadius +findArea Cylinder -length +getLength +setLength +findVolume 父类 子类 UML图
创建子类 创建子类继承父类的方法和属性,还可以: 1.加入新属性 2.加入新方法 3.覆盖父类的方法 源码 ©2005计算机系杨厚群 All rights lefts reserved
©2005 计算机系 杨厚群 All rights & lefts reserved. 创建子类 创建子类继承父类的方法和属性,还可以: 1. 加入新属性 2. 加入新方法 3. 覆盖父类的方法 源码
范例:继承 创建一个Cylinder对象,然后探讨Cylinder 和Circle两个类之间的关系 源码 ©2005计算机系杨群 All rights lefts reserved
©2005 计算机系 杨厚群 All rights & lefts reserved. 范例:继承 创建一个Cylinder对象,然后探讨Cylinder 和Circle两个类之间的关系 源码
使用关键字super 关键字super用来指代类的直接父类,有如下 两种使用方式: 调用父类的构造函数 调用父类的方法 ©2005计算机系杨厚群 All rights lefts reserved
©2005 计算机系 杨厚群 All rights & lefts reserved. 使用关键字super 关键字super用来指代类的直接父类,有如下 两种使用方式: – 调用父类的构造函数 – 调用父类的方法
范例:覆盖父类的方法 覆盖(override)是子类重定义方法,必须 有相同的方法头、方法名、返回值、参数列 表 Cylinder:类覆盖了Circle类定义的 findArea()方法 源码 ©2005计算机系杨群 All rights lefts reserved
©2005 计算机系 杨厚群 All rights & lefts reserved. 范例:覆盖父类的方法 覆盖(override)是子类重定义方法,必须 有相同的方法头、方法名、返回值、参数列 表 Cylinder类覆盖了Circle类定义的 findArea()方法 源码
Object类 Object类是所有类的根类 toString()方法返回一个代表该对象值的字 符串,几乎每个类都会覆盖此方法(强烈推 荐) equals0方法比较两个对象是否相等(判断 是否指向同一内存区域,意义不大,除非子 类覆盖该方法) ■clone)方法用于克隆对象 ©2005计算机系杨厚群 All rights lefts reserved
©2005 计算机系 杨厚群 All rights & lefts reserved. Object 类 Object类是所有类的根类 toString()方法返回一个代表该对象值的字 符串,几乎每个类都会覆盖此方法(强烈推 荐) equals() 方法比较两个对象是否相等(判断 是否指向同一内存区域,意义不大,除非子 类覆盖该方法) clone()方法用于克隆对象
protected修饰符 protected修饰符可以用来修饰属性和方法, protected修饰的属性和方法允许同一包内的 类或其子类访问,即使子类不在同一包内 ©2005计算机系杨群 All rights lefts reserved
©2005 计算机系 杨厚群 All rights & lefts reserved. protected修饰符 protected修饰符可以用来修饰属性和方法, protected修饰的属性和方法允许同一包内的 类或其子类访问,即使子类不在同一包内
protected修饰符(cont.) pacakge pl pacakge p2 class Cl class C2 extends Cl protected int x x can be read or modified in C2 class C3 class C4 Clcl: Clcl; c1.x can be read or c1.x cannot be read modified nor modified ©2005计算机系杨厚群 All rights lefts reserved
©2005 计算机系 杨厚群 All rights & lefts reserved. protected修饰符(cont.) pacakge p1 class C1 protected int x class C3 C1 c1; c1.x can be read or modified pacakge p2 class C2 extends C1 x can be read or modified in C2 class C4 C1 c1; c1.x cannot be read nor modified