c#多态性的作用?

c#多态性的作用是什么?不用举例,就说理论好了
2024-12-12 09:49:12
推荐回答(1个)
回答1:

接口多态性,继承多态性和抽象类多态性。

接口多态性:简单的说,很多类可以实现同样的接口,而一个类也可以实现很多个接口。

继承多态性:继承多态性是最常见的形式。通过virtual关键字的使用,继承多态性提供了方法的不同实现。
在继承一个类时,会继承该类的所有方法,属性,事件以及特性。另外还会继承所有这些成员
的实现。但有时候并不想继承某个或某些功能,或者需要稍作变化。现在只要在基类中把方法
或属性标记为virtual,就可以在子类中重写功能。

抽象类多态性:抽象类是指用abstract类型修饰符标记的类。抽象类通常具有抽象方法,抽象方法是指定
义了但是没有实现的方法,这种方法不能被实例化。用抽象类来实现多态性有点类似于继承
多态性。区别在于,方法标记是abstract,而不是virtual。抽象方法不提供实现,因此是完全依
靠子类来实现功能的。抽象方法也比较像接口中定义的方法,因为这种方法提供一个协议声
明,表示该方法会在子类中实现。

将方法标记为virtual:
当方法用关键字virtual修饰时,表明子类可以重写该方法的实现。这是所有面向对象语言的根
本。定义一个虚方法后,表明希望在子类中重写该方法。如果并不想重写方法,就不要将方法声
明为虚拟的,这样会导致额外的系统开销。

这种额外系统开销的来源,是因为要为重写方法检查对象的运行时类型。然后调用派生程度最
大的类中的重写方法。如果这个类为基类,哪么就调用该基类中的虚方法,因此,所有在检查
类型并查找重写方法时耗去的资源都浪费了。

由于派生类中的方法重写了基类中的方法,因此在声明派生类方法时,使用的标记应该与将要
重写的虚方法相同。