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方法是方法的最后一个实现

posted @ 2017-06-12 16:59  wws_edward  阅读(3279)  评论(0编辑  收藏  举报