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

在C#中,抽象类用 abstract 关键字声明,不能被直接实例化,只能被继承;它用来定义一组通用行为的“模板”,其中可以包含已实现的方法,也可以包含必须由子类实现的抽象成员(如 abstract 方法或属性)。
使用 abstract 修饰类,并可选地包含 abstract 成员和普通成员:
两者都支持多态,但语义和约束不同:
下面代码展示了 abstract 类中同时包含 abstract 和 virtual 方法:
abstract class Shape
{
// 抽象方法:子类必须实现
public abstract double GetArea();
<pre class="brush:php;toolbar:false;">// 虚方法:子类可选择重写
public virtual void Draw() => Console.WriteLine("绘制一个图形");
// 普通方法:直接可用
public void Info() => Console.WriteLine($"面积:{GetArea()}");}
class Circle : Shape { public double Radius { get; set; }
public override double GetArea() => Math.PI * Radius * Radius; // 必须实现
public override void Draw() => Console.WriteLine($"绘制圆形,半径{Radius}"); // 可选重写}
基本上就这些。关键记住:abstract 是“必须实现”,virtual 是“可以改写”。选哪个,取决于你对子类的约束意图。
以上就是C#怎么创建抽象类 C# abstract class与virtual方法的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号