c# 继承以及接口抽象类中的关键字

NEW  继承类中的一个方法可能会与基类中的方法重名,为消除警告,可以在前面加上new 关键字

class Mammal
{
   public void Talk()
   {
    }       
}
class Horse:Mammal
{
   new public void Talk()
   {
    }       
}

virtual  故意设计成被重写的方法称为虚方法,继承中override(重写)基类中的一个方法,此方法必须为virtual方法,而一个override方法将隐式地称为virtual方法,即如果以此派生类为基类再次派生时可以对此override方法进行重写,不允许virtual或者override一个private方法。

protectted  派生类与基类之间存在一种紧密联系,我们会允许派生类访问基类中的部分成员,而禁止不属于这个继承层次结构的类访问这些成员,在这种情况下可以使用protected关键字来标记成员

扩展方法 static&this   在某些情况下为了添加新的行为,继承不一定是最恰当的方案,尤其是我们希望快速扩展一个类型,同时不影响现有代码的时候。扩展方法必须是在静态类中定义的,而且要扩展的类型必须是方法中的第一个参数并且用this关键字取修饰。

static class Util
{
  public static int Negate(this int i)
    {
       return -i;  
    }  
}

Abstract  为了明确声明不允许创建某个类的实例,必须将那个类显式地声明为抽象类,抽象类试用于一些通用类,这些类可能是某些派生类的基类,但使用时又不必要实例化。抽象类可以包含抽象方法,抽象方法类似于virtual方法,但它不包含方法主体,必须在派生类中重写(override)方法。

abstract class GrazingMammal:Mammal, IGrazable
{
  abstract void DigestGrass();  
}

sealed  密封类关键字,为防止一个类作为基类被继承,可以使用sealed关键字密封一个类,防止其被继承。结构(struct)隐式密封,永远不能从一个结构派生。sealed只能密封一个override方法(sealed override进行声明)。

对比

interface 引入一个方法的名称

virtual方法是方法的第一个实现

override方法是方法的另一个实现

sealed方法是方法的最后一个实现

转载于:https://www.cnblogs.com/wwsedward/p/6993862.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值