多态是面向对象编程中的一个核心概念,它允许我们使用一个接口来表示多种类型。在Java中,多态主要分为两种:方法重载和方法重写。

多态的类型

  1. 编译时多态(静态多态):通过方法重载实现,在编译时期就能确定具体的方法调用。
  2. 运行时多态(动态多态):通过方法重写实现,在运行时期根据对象的实际类型来决定调用哪个方法。

方法重载

方法重载是指在同一个类中,存在多个方法名相同,但参数列表不同的方法。编译器会根据方法的参数列表来决定调用哪个方法。

public class Calculator {
    public int add(int a, int b) {
        return a + b;
    }

    public double add(double a, double b) {
        return a + b;
    }
}

方法重写

方法重写是指在子类中重写父类中的方法,并使用相同的签名。运行时多态就是通过方法重写实现的。

public class Animal {
    public void makeSound() {
        System.out.println("Animal makes a sound");
    }
}

public class Dog extends Animal {
    @Override
    public void makeSound() {
        System.out.println("Dog barks");
    }
}

多态的应用

多态可以让我们编写更加灵活和可扩展的代码。以下是一个简单的例子:

public class Test {
    public static void main(String[] args) {
        Animal animal = new Dog();
        animal.makeSound(); // 输出:Dog barks
    }
}

在上面的例子中,我们创建了一个Animal类型的引用animal,但实际上它指向了一个Dog对象。当调用makeSound()方法时,由于多态,会调用Dog类中的makeSound()方法。

扩展阅读

Java 面向对象编程基础

Dog