C# 之抽象类和虚幻方法

  • 在静态属性上应用 abstract 修饰符是漏洞百出的。
  • 在派生类中,通过包罗运用 override 修饰符的性质注脚能够重写抽象的存在延续属性。

抽象类具有以下特点:

abstract class A
 {
 public abstract void F();
 }
 abstract class B: A
 {
 public void G() {}
 }
 class C: B
{
public override void F() {
// actual implementation of F
}
}

空泛方法具有以下特点:

abstract 修饰符用于表示所修饰的类是不完全的,并且它只可以作为基类。抽象类与非抽象类在偏下地点是见仁见智的:

当从抽象类派生非抽象类时,那个非抽象类必须实际贯彻所继承的兼具抽象成员,从而重写这个抽象成员。在底下的以身作则中

 

除此之外在宣称和调用语法上分歧外,抽象属性的作为与虚空方法同样。

MSDN中C#言语专业的:10.1.1.1抽象类。此文如下:

  • 抽象类无法直接实例化,并且对抽象类使用 new 运算符是编写翻译时不当。即便有的变量和值在编写翻译时的档次能够是思梅止渴的,可是那样的变量和值必须或者为 null,或许隐含对非抽象类的实例的引用(此非抽象类是从抽象类派生的)。
  • 允许(但不须求)抽象类包涵抽象成员。
  • 抽象类无法被密封。

概述:abstract 关键字 
抽象类不可能被实例化,抽象方法不可能有方法体,抽象类中的全数抽象方法必须在子类中重写(override ),三个抽象类可以而且富含抽象方法和非抽象方法。

  • 虚幻方法是隐式的 virtual 方法。
  • 只允许在抽象类中使用抽象方法证明。
  • 因为虚无方法申明不提供实达成,所以没有方法体;方法注脚只是以三个分集团甘休,并且在署名后没有大括号
    ({ })。例如:

    public abstract void MyMethod();
    
  • 贯彻由 overriding 方法提供,它是非抽象类的分子。

  • 在空洞方法注明中应用 static 或 virtual 修饰符是荒唐的。

抽象类必须为持有接口成员提供达成。

在方式或质量表明中利用 abstract 修饰符以提示此办法或品质不带有达成。

在类注解中使用 abstract 修饰符以提醒类只可以是任何类的基类。

那么大家什么样时候理应用抽象类呢?
设若3个类设计的目点是用来被其他类继承的,它象征一类对象的所拥有的公共性质或方式,这一个那一个类就应当安装为抽象类。

**abstract **修饰符能够和类、方法、属性、索引器及事件联合利用。

抽象类 A 引入抽象方法 F。类 B 引入另多少个方法 G,但出于它不提供 F 的实现,B 也务必注脚为抽象类。类 C 重写 F,并提供三个现实贯彻。由于 C 中尚无了抽象成员,因而得以(但不要必须)将 C 申明为非抽象类。

  • 抽象类无法实例化。
  • 抽象类能够包括抽象方法和浮泛访问器。
  • 不可能用 sealed 修饰符修改抽象类,那意味着该类不能够被再三再四。
  • 从抽象类派生的非抽象类必须回顾继承的有着抽象方法和浮泛访问器的实达成。

相关文章