撒科打诨
接口多态性,继承多态性和抽象类多态性。接口多态性:简单的说,很多类可以实现同样的接口,而一个类也可以实现很多个接口。继承多态性:继承多态性是最常见的形式。通过virtual关键字的使用,继承多态性提供了方法的不同实现。在继承一个类时,会继承该类的所有方法,属性,事件以及特性。另外还会继承所有这些成员的实现。但有时候并不想继承某个或某些功能,或者需要稍作变化。现在只要在基类中把方法或属性标记为virtual,就可以在子类中重写功能。抽象类多态性:抽象类是指用abstract类型修饰符标记的类。抽象类通常具有抽象方法,抽象方法是指定义了但是没有实现的方法,这种方法不能被实例化。用抽象类来实现多态性有点类似于继承多态性。区别在于,方法标记是abstract,而不是virtual。抽象方法不提供实现,因此是完全依靠子类来实现功能的。抽象方法也比较像接口中定义的方法,因为这种方法提供一个协议声明,表示该方法会在子类中实现。将方法标记为virtual:当方法用关键字virtual修饰时,表明子类可以重写该方法的实现。这是所有面向对象语言的根本。定义一个虚方法后,表明希望在子类中重写该方法。如果并不想重写方法,就不要将方法声明为虚拟的,这样会导致额外的系统开销。这种额外系统开销的来源,是因为要为重写方法检查对象的运行时类型。然后调用派生程度最大的类中的重写方法。如果这个类为基类,哪么就调用该基类中的虚方法,因此,所有在检查类型并查找重写方法时耗去的资源都浪费了。由于派生类中的方法重写了基类中的方法,因此在声明派生类方法时,使用的标记应该与将要重写的虚方法相同。