苹者演大孝 South China Agr icultur al Uni versity 第八章继承
第八章 继 承
主要内容: ■81创建子类 ■82方法重载 ■83类层次结构 ■84可见性 ■85类间继承关系的结构 ■86组件类的层次结构 ■8.7扩展运配器类 ■88定时器类
主要内容: ◼ 8.1 创建子类 ◼ 8.2 方法重载 ◼ 8.3 类层次结构 ◼ 8.4 可见性 ◼ 8.5 类间继承关系的结构 ◼ 8.6 组件类的层次结构 ◼ 8.7 扩展适配器类 ◼ 8.8 定时器类
81创建子类 ■继承是现有类派生新类的过程。 用于派生新类的原始类称为父类、超类或者是基 类 ■被派生出的类称为子类或者是亚类 ■通过继承,新类自动包含了原始类的变量和方法 ■继承关系在UML类图中用空 Vehicle 心肩头表示,箭头从子类指向父 类。 Car
3 8.1 创建子类 ◼继承是现有类派生新类的过程。 ◼用于派生新类的原始类称为 父类、超类或者是基 类. ◼被派生出的类称为子类 或者是亚类 ◼ 通过继承,新类自动包含了原始类的变量和方法. ◼ 继承关系在UML类图中用空 心肩头表示,箭头从子类指向父 类。 Vehicle Car
Inheritance 继承的过程是在两个类之间建立“是一种”的关系,就 是说子类是一种更具体的父类版。 ■程序员可以将新变量和方法添加到派生的新类,或者修 改新类的变量和方法。 ■继承的目的之一是实现软件重用。 ■通过继承创建新类比重新写类更方便、快捷、成本低。 ■继承支持软件重用,使得可以利用现有软件传见新组件 以便将主要精力投在软件的设计、实现和测试
4 Inheritance ◼ 继承的过程是在两个类之间建立“是一种”的关系,就 是说子类是一种更具体的父类版。 ◼ 程序员可以将新变量和方法添加到派生的新类,或者修 改新类的变量和方法。 ◼ 继承的目的之一是实现软件重用。 ◼ 通过继承创建新类比重新写类更方便、快捷、成本低。 ◼ 继承支持软件重用,使得可以利用现有软件传见新组件, 以便将主要精力投在软件的设计、实现和测试
Deriving Subclasses ■在java中,使用 extends建立类之间的继承关系。 class Car extends vehicle // class contents See Words, java(page 288) See Book, iava(page 289) See Dictionary. iava (page 289)
5 Deriving Subclasses ◼ 在java中,使用extends建立类之间的继承关系。 ◼ See Words.java (page 288) ◼ See Book.java (page 289) ◼ See Dictionary.java (page 289) class Car extends Vehicle { // class contents }
811 Protected修饰符 ■可见性修饰符影像着父类中的类成员的访问方式 ■父类的 Private方法或变量则不能在子类中访问,或 通过子类对象访问 一个父类的Pub1ic方法或者变量可以在子类中按名 词访问,或通过子类对象访问。 ■单只为了子类能够访问而声明一个父类 Public变量, 则将违反封装性原理。 ■Java中提供了第三种可见性修饰符: protected
6 8.1.1 Protected修饰符 ◼ 可见性修饰符影像着父类中的类成员的访问方式。 ◼ 父类的 Private 方法或变量则不能在子类中访问,或 通过子类对象访问。 ◼ 一个父类的 Public 方法或者变量可以在子类中按名 词访问,或通过子类对象访问。 ◼ 单只为了子类能够访问而声明一个父类 Public 变量, 则将违反封装性原理。 ◼ Java 中提供了第三种可见性修饰符: protected
The protected Modifier ■在当一个变量或方法声明为 protected可见性时 子类就可以引用,并且使父类保持了一定的封装性。 ■声明为 protected可见性的变量和方法可以由同 个包内的任何类访问。 ■在UM图中, protected成员前加“#”符号表 示 protected可见性
7 The protected Modifier ◼ 在当一个变量或方法声明为 protected 可见性时, 子类就可以引用,并且使父类保持了一定的封装性。 ◼ 声明为 protected 可见性的变量和方法可以由同一 个包内的任何类访问。 ◼ 在 UML 图中,protected 成员前加 “#” 符号表 示 proteceed 可见性
Class Diagram for Words Book f pages int pageMessage(: void Words Dictionary definitions: int main(args: String D): void definition Message(: void
Class Diagram for Words Book # pages : int + pageMessage() : void Dictionary - definitions : int + definitionMessage() : void Words + main (args : String[]) : void
812 super引用 ■在继承中,父类所有的方法和变量(即使声明为 private可见性)都将由子类继承。 ■子类存在父类的所有方法和变量的定义,并且为变量预 留了内存空间,但是子类不能按名引用父类的 private成员。 ■构造方法不能被继承。构造方法是一种特殊方法,用于 创建一个具体类型的对象,子类没有必要继承父类的构 造方法。 ■如何处理子类引用父类的构造方法??
9 8.1.2 super引用 ◼ 在继承中,父类所有的方法和变量(即使声明为 private可见性)都将由子类继承。 ◼ 子类存在父类的所有方法和变量的定义,并且为变量预 留了内存空间,但是子类不能按名引用父类的 private成员。 ◼ 构造方法不能被继承。构造方法是一种特殊方法,用于 创建一个具体类型的对象,子类没有必要继承父类的构 造方法。 ◼ 如何处理子类引用父类的构造方法??
苹者演大孝 South China Agr icultur al Uni versity ■在Java中,使用保留字 super引用父类,使用 super引用可以访问父类的成员 ■使用 super引用可以调用父类的构造方法。 See Words2, java(page 291) See Book2, iava(page 292 See Dictionary2 iava (page 293)
◼ 在 Java 中,使用保留字 super 引用父类,使用 super 引用可以访问父类的成员。 ◼ 使用 super 引用可以调用父类的构造方法。 ◼ See Words2.java (page 291) ◼ See Book2.java (page 292) ◼ See Dictionary2.java (page 293)