什么是多态,多态包含哪两种类型
时间: 2024-11-21 20:28:48 浏览: 11
多态是面向对象编程中的一个重要概念,它指的是同一种行为或操作可以根据上下文的不同表现出不同的形式。在Java中,多态主要体现在两个方面:编译时多态(早期绑定)和运行时多态(晚期绑定)。
1. **编译时多态**,也称为静态多态,通常通过方法重载(Overloading)实现。当在一个类中有多个同名的方法但参数列表不同(包括参数个数、类型或顺序),编译器会在编译阶段根据传入的实际参数确定调用哪个方法。
```java
public class Calculator {
public int add(int a, int b) { ... }
public double add(double a, double b) { ... } // 这里就是方法重载
}
```
在这个例子中,`add` 方法的名称相同,但参数类型不同,编译器在看到具体的参数类型时就可以决定调用哪个方法。
2. **运行时多态**,也称为动态多态,主要通过继承和接口以及方法重写(Override)实现。如果子类继承了父类并覆盖了父类的某个方法,那么可以通过父类引用调用这个方法,实际执行的是子类版本。这是通过Java的虚方法机制来支持的。
```java
class Animal {
void sound() {
System.out.println("Animal makes a sound");
}
}
class Dog extends Animal {
@Override
void sound() {
System.out.println("Dog barks");
}
}
Animal animal = new Dog(); // 动物引用指向狗实例
animal.sound(); // 输出 "Dog barks",这里就是运行时多态
```
在这个例子中,`sound` 方法被重写了,虽然我们使用 `Animal` 类型的引用调用了它,但实际执行的是 `Dog` 类的实现。
阅读全文