导读:本期聚焦于小伙伴创作的《C#中如何使用abstract类?从基础到实战的保姆级教程》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《C#中如何使用abstract类?从基础到实战的保姆级教程》有用,将其分享出去将是对创作者最好的鼓励。

在C#里,abstract类是一种不能被直接实例化的特殊类,主要用来为一组相关的子类提供统一的模板和公用逻辑。借助abstract类,我们可以把不变的部分放在基类,把变化的行为留给派生类去实现,从而降低重复代码并提升扩展性。

C#中如何使用abstract类?从基础到实战的保姆级教程

什么是abstract类

abstract类使用 abstract 关键字修饰。它可能存在抽象成员,也可能包含普通已实现的方法。由于本身不完整,编译器禁止我们使用 new 去创建它的对象。

abstract类的主要特征

  • 不能实例化,只能被继承
  • 可以包含抽象方法、抽象属性,也可以包含普通方法
  • 子类必须实现所有抽象成员,除非子类也是abstract类

如何定义abstract类

下面给出一个最基础的写法,定义一个表示图形的abstract类,其中包含抽象方法计算面积。

using System;

// 抽象图形类
public abstract class Shape
{
    // 抽象方法,没有方法体
    public abstract double GetArea();

    // 普通方法,子类可直接使用
    public void PrintType()
    {
        Console.WriteLine("我是一个图形");
    }
}

子类如何实现abstract类

派生类通过 override 关键字重写抽象成员。以下示例实现了圆形和矩形。

public class Circle : Shape
{
    public double Radius { get; set; }

    public Circle(double r)
    {
        Radius = r;
    }

    // 必须实现抽象方法
    public override double GetArea()
    {
        return Math.PI * Radius * Radius;
    }
}

public class Rectangle : Shape
{
    public double Width { get; set; }
    public double Height { get; set; }

    public Rectangle(double w, double h)
    {
        Width = w;
        Height = h;
    }

    public override double GetArea()
    {
        return Width * Height;
    }
}

完整调用示例

虽然不能 new Shape(),但可以用父类变量指向子类对象,这是多态的常见用法。

class Program
{
    static void Main()
    {
        Shape s1 = new Circle(2);
        Shape s2 = new Rectangle(3, 4);

        s1.PrintType();
        Console.WriteLine("圆面积:" + s1.GetArea());

        s2.PrintType();
        Console.WriteLine("矩形面积:" + s2.GetArea());
    }
}

abstract类使用建议

场景是否适合用abstract类
多个类有共用逻辑且行为不完全一致适合
只是想定义接口规范更适合用interface
需要被实例化直接使用不适合

当项目中出现一组相似对象,且希望强制子类遵守某种结构时,abstract类就是非常合适的选择。它比普通基类更严格,又比接口更灵活,能携带已实现代码。

C#abstract类面向对象编程修改时间:2026-07-30 23:33:28

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。