Java程序设计任务驱动式教程 任务九 子承父业.ppt

Java程序设计任务驱动式教程 任务九 子承父业.ppt

* 5. 根类Object 在Java 中,所有的类都是通过直接或间接地继承java.lang.Object类得到的,Object类是一切类的祖先,称为根类。 当定义类,而没有使用extends关键字时,表示所定义类的父类为Object类,这是Java中的一种特别约定。根类Object类的方法如clone()、equals(obj)、finalize()、getClass()、hashCode()、notify()、notifyAll()、toString()、wait()等,子类都可以通过继承,进行调用。 关于toString()方法,在任务六的类的定义中,通过重写,已经多次使用了该方法。 Java程序设计任务驱动式教程 任务九 子承父业 * 9.4.2 类的多态 1. 多态的概念 多态是指一个方法声明的多种实现状态,即在程序中同名的不同方法共存,调用者只需要使用同一个方法名,系统会根据不同情况,调用相应的方法,从而实现不同的功能。简而言之,多态性即“一个名字,多个方法”。例如,父类Vehicle中有如下方法: public void accelerate(){ …… } 在子类Bus中,也有accelerate()方法: public void accelerate(){ //方法重写 …… } 在程序中同名的不同方法共存,形成了多态。 2. 多态的意义 在面向对象程序设计中,多态是具有表现多种形态的能力的特征,有时需要利用方法的重名,提高程序的抽象度和简洁性,以及程序的可扩展性及可维护性。例如使用多态之后,当需要增加新的子类PoliceCar警车类时,无需更改父类Vehicle,代码得到了扩展,维护起来也方便。 Java程序设计任务驱动式教程 任务九 子承父业 * 3.多态的分类 多态分为静态多态和动态多态。静态多态指通过同一个类中的方法重载实现的多态,动态多态指通过类与类之间的方法重写实现的多态。方法重载参见8.4.4。方法重写参见本任务9.4.1 类的继承4.子类与父类的关系⑶ 子类中方法重写部分。 静态多态是编译时多态,指程序会根据参数的不同来调用相应的方法,具体调用哪个被重载的方法,由编译器在编译阶段静态决定。 动态多态是运行时多态,指在运行时根据调用该方法的实例的类型来决定调用哪个重写方法。 静态多态对程序运行更有效率,动态多态更具有灵活性。 4.多态的实现 多态通过给同一个方法定义几个版本来实现的。例如,现有三个类,Grandfather类是Father类的父类,Father类是Child类的父类。三个类的代码如下: Java程序设计任务驱动式教程 任务九 子承父业 * package com.task09; /** * Grandfather.java * 多态,本类作为Father的父类 */ public class Grandfather { int i; int j; /** * @param i * @param j */ public Grandfather(int i, int j) { this.i = i; this.j = j; } int smoke(){ System.out.println(Grandfather的方法smoke():); return i+j; } } Java程序设计任务驱动式教程 任务九 子承父业 * package com.task09; /** * Father.java * 多态,本类作为Grandfather的子类,本类作为Child的父类 */ public class Father extends Grandfather { /** * @param i * @param j */ public Father(int i, int j) { super(i, j); } int drink(){ System.out.println(Father的方法drink():); return 0; } } Java程序设计任务驱动式教程 任务九 子承父业 * package com.task09; /** * Child.java * 多态,本类作为Father的子类 */ public class Child extends Father { /** * @param i * @param j */ public Child(int i, int j) { //子类的构造方法 super(i, j); //调用父类的构造方法 } int drink(){ //重写了父类的方法 System.ou

文档评论(0)

1亿VIP精品文档

相关文档