C#——面向对象之多态

之前在学习java时,就碰到过这个问题,当时一知半解,最近在巩固C#的知识,遇到这个问题,希望本次彻底搞清楚。

                                                                                                                                                                                                  劝君莫惜金缕衣,劝君惜取少年时。

                                                                                                                                                                                                                                 ——杜秋娘

 

一、什么是多态?

         多态是面向对象的一个重要特征。可以解释为通过继承实现的不同对象调用相同的方法(收到相同的消息时),表现出不同的行为,称之为多态。

         C#支持两种类型的多态:

  静态多态——也叫编译时的多态。对于非虚成员,在编译时根据参数和返回值类型的不同,加载不同的方法,实现多态。

  动态多态——也叫运行时的多态。对于基类虚方法或者抽象方法,在编译时并未确定调用哪个方法,直到运行时才根据情况加载方法(重写“override”)。

二、为什么要有多态?

         众所周知,多态是继封装、继承之后的,面向对象的第三个重要基石。而面向对象是面向客观世界存在的对象实体和主观抽象的概念。在现实世界中,存在大量的不同对象对于同一个消息做出不同的反应的现象。如cut,对于理发师这个对象来说,他会剪头发;对于医生来说,他会切开患者的皮肤;对于演员来说,他会停止当前的表演行为。所以存在多态就是面向对象本身特征的一个体现。

         其次,编译时的多态可以加快运行速度(有待考证),运行时的多态带来了高度灵活和抽象的特点。


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值