多态是面向对象编程中的一个核心概念,它允许我们使用一个接口来表示多种类型。在Java中,多态主要分为两种:方法重载和方法重写。
多态的类型
- 编译时多态(静态多态):通过方法重载实现,在编译时期就能确定具体的方法调用。
- 运行时多态(动态多态):通过方法重写实现,在运行时期根据对象的实际类型来决定调用哪个方法。
方法重载
方法重载是指在同一个类中,存在多个方法名相同,但参数列表不同的方法。编译器会根据方法的参数列表来决定调用哪个方法。
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()
方法。
扩展阅读
Dog