模块3 面向对象编程高级 --- 第十章:实现多态

第十章 实现多态

主要知识点

  1、多态的定义

  2、实现多态的条件

学习目标

  理解多态的含义,掌握多态的使用方法,所谓多态:多种状态。在面向对象语言中,接口中定义的抽象方法的多种不同实现方式即多态。

10.1 创建多态的条件

10.1.1 多态的定义

  首先多态的作用是什么呢?

  即一个引用变量到底会指向哪个类的实例对象。让程序可以选择多个运行状态,这就是多态性。

10.1.2 多态的条件

  在代码中实现Java的多态必须遵守两个必要的条件:

  (1)存在子类继承父类的关系(包括接口的实现);

  (2)子类覆盖父类中的方法;

public abstract class Animal{
    public abstract void say();
}

public class Dog extends Animal{
    public void say(){
        System.out.println("汪汪汪");
    }
}  

public class Cat extends Animal{
    public void say(){
        System.out.println("喵喵喵");
    }
}

public class Pig extends Animal{
    public void say(){
        System.out.println("哼哼哼");
    }
}    

  说明:

  (1)覆盖方法的参数列表必须和被覆盖方法的参数列表完全相同,否则,不能成为其覆盖而是重载。

  (2)覆盖方法的返回值必须与被覆盖方法的返回值一致。

  (3)静态方法不能被覆盖为非静态的方法(编译会出错)。

10.2 多态的实现方法

10.2.1 子类向父类转型实现多态

  首先想要理解多态性,要知道“向上转型”的含义。

Cat c = new Cat();
Animal a = new Cat(); 

  Animal类型的引用是可以指向Cat类型的对象的。

10.2.2 类向接口转型实现多态

  类实现接口,通常也意味着该类继承接口,类向接口转型实现多态也可以是面向对象语言无处不在的应用。

习题

一、简答题

  1、什么是多态?类的多态是怎么实现的?

  2、创建多态需要哪些条件?

  3、类是怎么向接口转型实现多态的?

二、操作题

  1、定义交通工具的抽象类Vehicle,包括方法run,然后定义三个子类Car(汽车)、Ship(船)、plane(飞机),分别实现Vehicle的run方法。

  2、参考例10-2,应用Vehicle类与Car(汽车)、Ship(船)、plane(飞机)实现多态。

  3、运行例10-3,分析在主类中应用多态的过程。

posted @ 2024-07-28 12:27  我太想努力了  阅读(269)  评论(0)    收藏  举报