C#的继承与多态机制

本文深入探讨了C#中的继承与多态机制,通过`abstract`、`virtual`和`new`三个关键字解释了类的抽象、方法覆盖与方法共存的概念。讨论了在继承中方法表的变化以及成员变量的隐藏。此外,还涵盖了C#继承的特点,如继承的传递性、方法的覆写、私有成员的继承和`new`关键字在虚方法中的作用。最后提到了封装的重要性和实现方式,以及多态在系统设计中的应用。
摘要由CSDN通过智能技术生成

就C#当中的继承与多态机制进行了下探索,此处主要根据三个关键字进行探讨:

  1. abstract 

  2. virtual

  3. new

 

  针对abstract关键字,是抽象之意。用来限定类时,类中的方法,不能有方法体;用来限定方法时,同样也不能有方法体,并且在子类中除非继续使用抽象方法,否则必须完成方法体。

  针对virtual关键字,是虚之意。简单的用法是用来指示类中的方法可以被子类的同名方法覆盖或者共存。覆盖时,子类中使用override关键字。共存时,使用new关键字。

  针对new关键字,是新之意。在子类方法中的用法是,用以指示子类中与父类存在的同名方法将在方法表中同父类方法共存,并不覆盖父类的同名方法。这样就达到了多态机制下并非一味覆盖的效果。

 

  我们知道对于类的成员变量来说,存于GC堆内,从低到高,存了所有对象的父类,以及再沿继承线向上的所有类的类成员变量,这样的方式,犹如方法表用new关键字构造时的情况。或者说,方法表中的方法,用new关键字声明的时候,其存在形式,就有如子父类的同名成员变量在GC堆里存在的情况一样。

 

  这里举个简单的例子:Chicken : Bird : Animal

  以上三类中都有一个成员变量Type,为他们自己的小写类名;都有一个方法,方法名为showType()。

  此时,我们用override, override , virtual 三个关键字来分别声明这三个类中的方法。之后我们得到了如下结果:

  Animal chicken1 = new Chicken();
        Bird chicken

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值