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关键字实现,可以将一个类拆分到多个文件中编写,编译时自动合并为一个完整类,方便团队协作和代码分类管理。

相关推荐
雪碧透心凉_11 分钟前
while 循环与循环嵌套
开发语言·python
乐观勇敢坚强的老彭18 分钟前
信奥C++一维数组笔记
开发语言·c++·笔记
这就是佬们吗26 分钟前
Python入门⑤-异常处理、文件操作与实战项目
开发语言·数据库·python·算法·pycharm
asdzx6737 分钟前
Python PDF 拆分实战指南:单页拆分与按需页码范围拆分
开发语言·python·pdf
孬甭_1 小时前
C++ vector
开发语言·c++
AOwhisky1 小时前
Python 学习笔记(第五期)——组合数据类型:列表、元组、集合与字典精讲——核心知识点自测与详解
开发语言·笔记·python·学习·云计算
czhc11400756631 小时前
722:零侵入;DBG;
c#
灯澜忆梦10 小时前
GO_并发编程---定时器
开发语言·后端·golang
-银雾鸢尾-11 小时前
C#中的StringBuilder相关方法
开发语言·c#
-银雾鸢尾-11 小时前
C#中结构体与类的区别;抽象类与接口的区别
开发语言·c#