C# 四种特殊类:抽象类、密封类、静态类、部分类

C# 中共有四种特殊类 ,各自拥有严格的特性、使用限制和场景,是基础笔试、面试高频考点。分别为:抽象类 abstract密封类 sealed静态类 static部分类 partial

一、抽象类 abstract class

1. 核心代码

复制代码
// 抽象类:专门用于被继承的模板类
abstract class Test
{

}

2. 核心特性(必背)

  • 不能被实例化(不能 new)

  • 专门用于被子类继承,充当父类模板

  • 可以包含普通成员、虚方法、抽象方法

  • 只要类中有抽象方法,该类必须是抽象类

3. 一句话总结

抽象类是"模板",只能被继承,不能直接创建对象。


二、密封类 sealed class

1. 核心代码

复制代码
// 密封类:可以实例化、不能被继承
sealed class Test1
{

}

2. 核心特性(必背)

  • 可以被实例化(可以 new)

  • 不能被任何类继承(最终类、终止继承链)

  • 无派生类,杜绝重写和扩展

  • 使用sealed 修饰

3. 一句话总结

密封类是"最终类",可以造对象,禁止别人继承。

二、抽象类 abstract class

1. 核心特点

  • 使用 abstract 修饰

  • 不能实例化(不能 new)

  • 唯一作用:专门用来被继承

2. 内部可包含成员

  • 普通属性、普通方法(有方法体)

  • 抽象属性、抽象方法(无方法体)

3. 继承规则

  • 普通子类继承抽象类:必须重写所有抽象成员

  • 抽象子类继承抽象类:可以不实现,继续传递给子类


三、静态类 static class

1. 核心代码

复制代码
// 静态类:全部成员静态、不能实例化、不能被继承
static class Test2
{
    // 静态类只能包含静态成员
    public static int Age { get; set; }
}

2. 核心特性(必考重点)

  • 不能被实例化(禁止 new)

  • 不能被继承、也不能继承其他类

  • 所有成员必须是静态的(字段、属性、方法)

  • 程序启动时自动加载,全局唯一

  • 通过 类名.成员 直接调用 例:Test2.Age = 18;

  • 使用 static 修饰

3. 一句话总结

静态类是工具类,全员静态,不能造对象、不能被继承。


四、部分类 partial class

1. 核心代码

复制代码
// 部分类:可拆分多文件,编译自动合并
partial class Test3
{

}

2. 核心原理

部分类允许将同一个类 的代码拆分到多个不同的代码文件 中,程序编译时,编译器会自动将所有 partial 分部代码 合并为一个完整的类

3. 使用规则(必记)

  • 必须使用 partial 关键字修饰

  • 所有分部类 类名、命名空间必须完全一致

  • 每一个拆分文件都必须带 partial

  • 编译后对外仍是一个类,无感知拆分

4. 适用场景

团队协作、自动生成代码与手写代码分离、超大类拆分维护。

5. 一句话总结

部分类是"拆分合并类",写时分文件,跑时是一个类。


五、四大特殊类终极对比表(满分背诵版)

类类型 关键字 能否实例化(new) 能否被继承 核心特点
抽象类 abstract ❌ 不能 ✅ 可以 模板类,用于被继承
密封类 sealed ✅ 可以 ❌ 不能 最终类,禁止继承
静态类 static ❌ 不能 ❌ 不能 全员静态,工具类
部分类 partial ✅ 可以 ✅ 可以 分文件编写,编译合并

六、高频易错考题总结

  • 抽象类 不能 new,但可以包含普通方法

  • 密封类是杜绝派生,不影响实例化

  • 静态类双重禁止:不能实例化、不能被继承

  • 静态类中不允许出现实例成员

  • partial 只是语法拆分,运行时是一个完整类

七、简答题满分模板

1. 抽象类的特点?

抽象类使用abstract修饰,不能实例化,主要用于被继承;可以包含普通成员和抽象成员,普通子类必须重写所有抽象成员,用于定义统一规范。

2. 密封类的特点?

密封类使用sealed修饰,可以实例化,但不能被继承,用于防止类被拓展和重写,保护核心逻辑。

3. 静态类的特点?

静态类使用static修饰,不能实例化、不能被继承,内部所有成员必须为静态成员,通过类名直接调用,常用于工具类开发。

4. 部分类的作用?

部分类通过partial关键字实现,可以将一个类拆分到多个文件中编写,编译时自动合并为一个完整类,方便团队协作和代码分类管理。

相关推荐
VidDown1 小时前
Webhook 调试器:让第三方回调“原形毕露”
java·开发语言·javascript·编辑器·postman
装不满的克莱因瓶2 小时前
基于 OpenResty 扩展开发实现动态服务注册与发现能力
java·开发语言·架构·openresty
weixin_523185322 小时前
Java基础知识总结(四):引用数据类型与参数传递机制
java·开发语言·python
Nayxxu2 小时前
Claude API 生产稳定性设计:超时、降级、备用模型和告警怎么做
开发语言·php
王cb2 小时前
WinRT Server and Client c#
开发语言·c#
Selina K3 小时前
C中日历时间转换
c语言·开发语言
怪我冷i3 小时前
zig语言学习笔记——heap-memory
开发语言·golang·zig
咸鱼翻身小阿橙3 小时前
在VScode使用C#并且调用opencv库
vscode·opencv·c#
.千余3 小时前
【C++】手写双向链表:list容器模拟实现
开发语言·c++·笔记·学习·其他