抽象类(Abstract Class)#
来源:
D:\study\C#1\stu0727\抽象类
抽象类是被设计出来专门让其他类继承的基类。抽象类中可以包含抽象方法(没有函数体,没有具体实现),由继承它的子类去实现。
基本语法#
// 使用 abstract 关键字声明抽象类
abstract class Printer
{
public string Name { get; set; }
public int Price { get; set; }
// 抽象方法:使用 abstract 修饰,没有方法体
public abstract void Print(string val);
}
// 子类必须实现(override)抽象方法
class ColorPrinter : Printer
{
public override void Print(string val)
{
Console.WriteLine("打印的彩色内容" + val);
}
}
class BlackPrinter : Printer
{
public override void Print(string val)
{
Console.WriteLine("打印的黑白内容" + val);
}
}
抽象类 vs 普通类#
| 特性 | 抽象类 | 普通类 |
|---|---|---|
| 能否实例化 | ❌ 不能 new |
✅ 可以 |
| 能否包含抽象方法 | ✅ 可以 | ❌ 不可以 |
| 能否包含普通方法 | ✅ 可以 | ✅ 可以 |
| 子类是否必须重写抽象方法 | ✅ 如果子类不是抽象类,必须全部重写 | ❌ 不需要 |
| 抽象方法能否是 private | ❌ 不能(必须被子类访问) | — |
核心理解:抽象类 = 模板/规范。它定义了"是什么"(抽象方法),但不定义"怎么做",具体的实现由子类完成。