C#怎么创建抽象类 C# abstract class与virtual方法

admin 百科 10
抽象类用abstract声明,不可实例化,只能继承;可含已实现成员和必须由子类重写的abstract成员;含abstract成员的类必须声明为abstract;子类须override所有abstract成员,除非自身也声明为abstract。

C#怎么创建抽象类 C# abstract class与virtual方法-第1张图片-佛山资讯网

在C#中,抽象类用 abstract 关键字声明,不能被直接实例化,只能被继承;它用来定义一组通用行为的“模板”,其中可以包含已实现的方法,也可以包含必须由子类实现的抽象成员(如 abstract 方法或属性)。

怎么创建抽象类

使用 abstract 修饰类,并可选地包含 abstract 成员和普通成员:

  • 类名前加 abstract,例如:abstract class Animal
  • 抽象类中可以有普通方法(带实现)、字段、属性、构造函数,也可以有 abstract 方法(无方法体,以分号结尾)
  • 只要类中有一个 abstract 成员,该类就必须声明为 abstract(但反过来不成立:abstract 类可以没有 abstract 成员,只是不能被 new)
  • 子类继承抽象类时,必须用 override 实现所有 abstract 成员,除非子类也声明为 abstract

abstract 方法 vs virtual 方法

两者都支持多态,但语义和约束不同:

  • abstract 方法:只有声明,没有实现;强制子类重写(override),不可用 sealed 或 virtual 修饰;只能出现在 abstract 类中
  • virtual 方法:有默认实现;子类可选择性 override(也可不重写,直接用父类逻辑);所在类不必是 abstract;可被 sealed override 阻止进一步重写
  • 二者都不能是 private(因为需要被子类访问),通常用 protected 或 public

一个对比示例

下面代码展示了 abstract 类中同时包含 abstract 和 virtual 方法:

标签: c#

发布评论 0条评论)

还木有评论哦,快来抢沙发吧~