抽象类
探索抽象类,以及它们在为派生类创建共享结构时所发挥的作用
抽象类 是 CoddyKit 上的免费 C# Academy 课时。 这是第 2 节课,共 6 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 C# Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 C# Academy 课程共包含 6 节课。
抽象类
抽象类
欢迎来到下一课!在本课中,您将学习 C# 中的抽象类、抽象类的用途,以及它们与接口的区别。让我们开始吧!

什么是抽象类?
什么是抽象类?
抽象类是不能直接实例化的类。它为其他类提供蓝图,还可以包含抽象方法,这些方法必须由派生类实现。
要点:抽象类既可以包含已完整实现的方法,也可以包含仅声明而未实现的方法(抽象方法)。
定义抽象类
定义抽象类
要定义抽象类,请使用 abstract 关键字。示例:
提示:使用抽象类为相关类提供共同的基类。
using System;
abstract class Animal {
public abstract void Speak(); // Abstract method
public void Sleep() { // Non-abstract method
Console.WriteLine("The animal is sleeping.");
}
}
实现抽象类
实现抽象类
派生类必须实现抽象类中的所有抽象方法。示例:
要点:抽象方法定义了派生类必须实现的行为。
using System;
abstract class Animal {
public abstract void Speak(); // Abstract method
public void Sleep() {
Console.WriteLine("The animal is sleeping.");
}
}
class Dog : Animal {
public override void Speak() {
Console.WriteLine("The dog barks.");
}
}
class Program {
static void Main() {
Dog myDog = new Dog();
myDog.Speak(); // Outputs: The dog barks.
myDog.Sleep(); // Outputs: The animal is sleeping.
}
}
抽象类与接口
抽象类与接口
抽象类和接口都用于实现抽象,但它们在以下几个方面有所不同:
- 抽象类可以同时包含已实现的方法和抽象方法,而接口只能包含抽象方法(在 C# 8.0 之前)。
- 抽象类可以包含字段、构造函数以及成员的访问修饰符。
- 一个类只能继承一个抽象类,但可以实现多个接口。
提示:对于关系密切的类,请使用抽象类;对于更广泛的抽象,请使用接口。
何时使用抽象类
何时使用抽象类
在以下情况下,抽象类最适合使用:
- 您希望定义一个包含共享功能的共同基类。
- 您需要包含能够提供默认实现的非抽象方法。
- 您正在处理具有共同层次结构的相关类。
示例:为 Circle 和 Rectangle 类创建一个名为 Shape 的抽象类。
练习挑战
练习挑战
创建一个包含抽象方法 CalculateArea() 的抽象类 Shape。在派生类 Rectangle 和 Circle 中实现该方法。示例:
using System;
abstract class Shape {
public abstract double CalculateArea();
}
class Rectangle : Shape {
public double Width { get; set; }
public double Height { get; set; }
public override double CalculateArea() {
return Width * Height;
}
}
class Circle : Shape {
public double Radius { get; set; }
public override double CalculateArea() {
return Math.PI * Radius * Radius;
}
}
class Program {
static void Main() {
Shape rectangle = new Rectangle { Width = 5, Height = 4 };
Shape circle = new Circle { Radius = 3 };
Console.WriteLine("Rectangle Area: " + rectangle.CalculateArea());
Console.WriteLine("Circle Area: " + circle.CalculateArea());
}
}
抽象类最佳实践
抽象类最佳实践
以下是一些最佳实践:
- 当您有需要被继承的共享功能时,请使用抽象类。
- 使抽象类专注于核心职责,避免添加不必要的成员。
- 在适当的情况下,将抽象类与接口结合使用。
提示:抽象类应该为派生类提供坚实的基础。
太棒了!
太棒了!
恭喜您!您已经学会了如何使用抽象类定义共享行为,并确保派生类之间的一致性。在下一课中,我们将学习 C# 中的静态成员和方法。让我们继续编写代码吧!

常见问题解答
「抽象类」课时是免费的吗?
是的 — 「抽象类」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 C# Academy 课程的其余内容,请升级到 CoddyKit PRO。 C# Academy 课程共包含 6 节课。
「抽象类」这节课中我会学到什么?
探索抽象类,以及它们在为派生类创建共享结构时所发挥的作用 你通过在浏览器中直接运行的动手代码来练习 C# Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 C# Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 C# Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 6 节。
「抽象类」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 C# Academy 课中编写并运行代码吗?
能。每节 C# Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。