一、面向对象最核心的机制——动态绑定,也叫多态
在 Java 开发中,多态(Polymorphism)是面向对象编程的三大特性之一。它允许我们将父类的引用指向子类的对象,从而在运行时根据实际对象的类型来决定调用哪个方法。这种机制被称为动态绑定(Dynamic Binding),也是实现代码灵活性和扩展性的基石。
1.1. 通过下面的例子理解动态绑定,即多态
为了直观地理解这一概念,我们来看一个经典的继承场景。假设有一个基类 Animal 和一个子类 Dog。
class Animal {
public void speak() {
System.out.println("Some animal makes a sound");
}
}
class Dog extends Animal {
@Override
public void speak() {
System.out.println("Woof!");
}
}
public class Main {
public static void main(String[] args) {
Animal myPet = new Dog(); // 父类引用指向子类对象
myPet.speak(); // 输出:Woof!
}
}
注意这里的关键点:声明类型是 Animal,但实际创建的是 Dog 实例。当调用 speak() 时,JVM 会在运行时检查 myPet 实际指向的对象类型,并执行 Dog 类中的重写方法。这就是动态绑定的本质。
在实际项目中,这种写法极大地降低了模块间的耦合度。比如定义一个接口或抽象类作为参数类型,具体实现由调用方决定,这样新增功能时无需修改原有逻辑,符合开闭原则。

