子类型多态(subtype polymorphism):一种面向对象与类型系统中的多态机制。指当某个表达式/变量被声明为“父类型”(更一般的类型)时,运行时可以实际绑定到其任意子类型的对象,并通过同一接口进行调用;具体执行由对象的实际类型决定(常见于方法重写与动态分派)。也常被称为包含多态(inclusion polymorphism)。
/ˈsʌbtaɪp ˌpɑːlɪˈmɔːrfɪzəm/ (美式常见)
A Shape variable can refer to a Circle object—this is subtype polymorphism.
Shape 类型的变量可以引用 Circle 对象——这就是子类型多态。
In a well-designed API, subtype polymorphism lets you add new subclasses without changing existing client code, as long as the new types respect the base type’s contract.
在设计良好的 API 中,只要新类型遵守基类的契约,子类型多态就能让你通过添加新子类来扩展功能,而无需修改既有的客户端代码。
subtype 由 *sub-*(“在下、次级”)+ type(“类型”)构成,表示“某一类型之下的更具体类型”。polymorphism 来自希腊语词根 *poly-*(“多”)+ morph(“形态”)+ -ism(“性质/主义”),字面意思是“多种形态”。合起来强调:同一“父类型”接口下可以呈现多种“子类型”的具体行为。