多态性(C# 编程指南)
更新: 2008 年 7 月
多态性常被视为自封装和继承之后,面向对象的编程的第三个支柱。Polymorphism(多态性)是一个希腊词,指“多种形态”,多态性具有两个截然不同的方面:
-
在运行时,在方法参数和集合或数组等位置,派生类的对象可以作为基类的对象处理。发生此情况时,该对象的声明类型不再与运行时类型相同。
-
基类可以定义并实现虚方法,派生类可以重写这些方法,即派生类提供自己的定义和实现。在运行时,客户端代码调用该方法,CLR 查找对象的运行时类型,并调用虚方法的重写方法。因此,您可以在源代码中调用基类的方法,但执行该方法的派生类版本。
虚方法允许您以统一方式处理多组相关的对象。例如,假定您有一个绘图应用程序,允许用户在绘图图面上创建各种形状。您在编译时不知道用户将创建哪些特定类型的形状。但应用程序必须跟踪创建的所有类型的形状,并且必须更新这些形状以响应用户鼠标操作。您可以使用多态性通过两个基本步骤解决这一问题:
-
创建一个类层次结构,其中每个特定形状类均派生自一个公共基类。
-
使用虚方法通过对基类方法的单个调用来调用任何派生类上的相应方法。