多态 (Polymorphism) 是指不同类型的实体响应相同消息(方法调用)时产生不同行为的能力。它是面向对象编程 (OOP) 的三大支柱之一(封装、继承、多态)。
核心直觉
“一个接口,多种形态” (One Interface, Multiple Forms)
想象一个通用遥控器上的“播放”按钮:
- 对着电视按:播放电影。
- 对着音响按:播放音乐。
- 对着空调按:无响应(或报错)。
虽然你发出的指令(按下“播放”)是完全相同的,但接收者(对象)根据自身的类型做出了不同的反应。你不需要知道具体的设备型号,只需要知道它能响应“播放”即可。
关键类型
- 特设多态 (Ad hoc Polymorphism): 函数重载 (Overloading)。同名函数根据参数类型/数量不同而表现不同(如
print(int)vsprint(string))。 - 参数多态 (Parametric Polymorphism): 泛型 (Generics)。代码对多种类型通用,不依赖具体类型(如
List<T>)。 - 子类型多态 (Subtype Polymorphism): 继承/接口实现。子类重写父类方法,运行时根据实际对象类型调用对应方法(最常见的 OOP 多态)。