为了账号安全,请及时绑定邮箱和手机立即绑定

c#多态性的作用?

c#多态性的作用?

C#
犯罪嫌疑人X 2019-03-20 14:17:49
c#多态性的作用?
查看完整描述

2 回答

?
撒科打诨

TA贡献1934条经验 获得超2个赞

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

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

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

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

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

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

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



查看完整回答
反对 回复 2019-03-23
?
慕无忌1623718

TA贡献1744条经验 获得超4个赞

多态又称后期绑定,是一种在运行时(just in time)指定方法调用地址的技术。

通常,编译器在编译期就能知道方法的地址,运行时直接加载这个地址上的堆栈代码(.net中指中间代码)就可以了,这被称为静态绑定或前期绑定,虽然很少使用这个术语。

编译器在编译期不能确定方法的地址,而只能在运行时确定的就被称为后期绑定(或动态联编)。例如,对于object类的ToString方法,其方法定义是返回类的名称,但是,调用这个方法却不一定能够返回类的名称(如String类),因为它有可能被派生类重写,多态技术确保运行时能够调用到正确的方法。

查看完整回答
反对 回复 2019-03-23
  • 2 回答
  • 0 关注
  • 609 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信