多态

多态

编译时多态

  • 编译2期间决定目标方向

  • 通过overloading重载实现

  • 方法名相同,参数不同

运行时多态

  • 运行期间决定目标方法、同名同参

  • overriding和继承实现

  • JVM决定目标

多态的种类

动态多态(dynamic polymorphism):通过类继承机制和虚函数机制生效于运行期。可以优雅地处理异质对象集合,只要其共同的基类定义了虚函数的接口。也被称为子类型多态(Subtype polymorphism)或包含多态(inclusion polymorphism)。在面向对象中,这被直接称为多态。

静态多态(static polymorphism):模板也允许将不同的特殊行为和单个泛化记号相关联,由于这种关联处理于编译期而非运行期,因此被称为“静态”。可以用来实现类型安全、运行高效的同质对象集合操作。C++STL不采用动态多态来实现就是个例子。

  • 函数重载(Function Overloading)

  • 运算符重载(Operator Overloading)

  • 带变量的宏多态(macro polymorphism)

  • 非参数化多态或译作特设多态(Ad-hoc polymorphism)

  • 参数化多态(Parametric polymorphism):把类型作为参数的多态。在面向对象程序设计中,这被称作泛型编程。

posted @ 2021-11-14 21:04  小浣熊12  阅读(57)  评论(0)    收藏  举报