编程那点事编程那点事

专注编程入门及提高
探究程序员职业规划之道!

多态概述

在设计一个方法时,通常希望该方法具备一定的通用性。例如要实现一个动物叫的方法,由于每种动物的叫声是不同的,因此可以在方法中接收一个动物类型的参数,当传入猫类对象时就发出猫类的叫声,传入犬类对象时就发出犬类的叫声。在同一个方法中,这种由于参数类型不同而导致执行效果各异的现象就是多态。

在Java中为了实现多态,允许使用一个父类类型的变量来引用一个子类类型的对象,根据被引用子类对象特征的不同,得到不同的运行结果。接下来通过一个案例来演示。

//定义接口Anmal
interface Animal {
    void shout(); // 定义抽象shout()方法
}
// 定义Cat 类实现Animal 接口
class Cat implements Animal {
    // 实现shout()方法
    public void shout() {
        System.out.println("喵喵……");
    }
}
// 定义Dog 类实现Animal 接口
class Dog implements Animal {
    // 实现shout()方法
    public void shout() {
        System.out.println("汪汪……");
    }
}
// 定义测试类
public class Example {
    public static void main(String[] args) {
        Animal an1 = new Cat(); // 创建Cat 对象,使用Animal 类型的变量an1 引用
        Animal an2 = new Dog(); // 创建Dog 对象,使用Animal 类型的变量an2 引用
        animalShout(an1); // 调用animalShout()方法,将an1 作为参数传入
        animalShout(an2); // 调用animalShout()方法,将an2 作为参数传入
    }
    // 定义静态的animalShout()方法,接收一个Animal 类型的参数
    public static void animalShout(Animal an) {
        an.shout(); // 调用实际参数的shout()方法
    }
}

运行结果:

喵喵……
汪汪……

第25行、第26行代码实现了父类类型变量引用不同的子类对象,当第27行、第28行代码调用animalShout()方法时,将父类引用的两个不同子类对象分别传入,结果打印出了“喵喵”和“汪汪”。由此可见,多态不仅解决了方法同名的问题,而且还使程序变得更加灵活,从而有效地提高程序的可扩展性和可维护性。

未经允许不得转载: 技术文章 » Java编程 » 多态概述