首页 > 编程笔记 > Java笔记

Java多态的用法

面向对象的三大特征为封装、继承和多态,前面已经介绍了封装和继承,本节介绍多态。

在编程语言理论和类型理论中,多态是指为不同类型的实体提供单一接口或使用单个符号来表示不同的类型。在 Java 中,多态可以理解为通过单个父类类型来代表多个子类类型。

Java 的多态性体现在两个方面,分别为子类型多态性和参数多态性。

Java 中的子类型多态性体现为类的继承、方法重写及父类引用指向子类对象。在 Java 中可以声明一个父类类型的变量引用子类类型的对象。同时,子类可以重写从父类继承的方法,提供自身独特的逻辑。当通过父类类型的变量调用一个方法时,具体执行的逻辑取决于父类类型的变量实际引用的子类对象的类型,即可能表现出多种形态。

Java 中的参数多态性体现为类的继承和父类引用指向子类对象。当声明一个方法时,可以在参数列表中使用父类类型,调用该方法时,其父类类型的多个子类对象均可作为参数传入该方法。

使用多态可以有效地提高程序的可扩展性和可维护性。接下来通过实例来介绍多态。

【实例】面向对象的多态。
class Human7 {
    public void showName() {
        System.out.println("我是人类!");
    }
}

class Sportsman7 extends Human7 {
    // 实现 showName() 方法
    public void showName() {
        System.out.println("我是运动员!");
    }
}

class Postman extends Human7 {
    public void showName() {
        System.out.println("我是邮递员!");
    }
}

public class Test {
    public static void main(String[] args) {
        Human7 a = new Human7();
        humanName(a);
        Sportsman7 s = new Sportsman7();
        humanName(s);
        Human7 p = new Postman();
        humanName(p);
        // 这个方法的参数类型是Human7,实际传入Human7或Human7的子类都行
        // 具体是哪个类由Java虚拟机来判断,这就是多态
    }

    static void humanName(Human7 a) {
        a.showName();
    }
}
运行结果为:

我是人类!
我是运动员!
我是邮递员!

由运行结果可知,实现了父类类型的变量引用不同的子类对象。由此可知,使用多态不仅可以使程序变得灵活,还可以解决方法同名的问题。

相关文章