当前位置: 首页 > news >正文

C# 中抽象类、密封类、静态类和接口的区别

 在 C# 中,抽象类、密封类、静态类和接口是四种具有不同设计目的和特性的类型结构,它们在继承关系、实例化能力和使用场景上有显著区别:

核心概念

  • 抽象类(Abstract Class):用abstract修饰,不能直接实例化,需通过派生类实现。可包含抽象成员(必须在派生类中实现)和具体实现的成员,作为相关类的基类,提取公共逻辑并强制子类实现特定方法。

  • 密封类(Sealed Class):用sealed修饰,可实例化但禁止被继承,确保类的实现不被修改。仅包含非抽象成员,适用于功能完善且无需扩展的类。

  • 静态类(Static Class):用static修饰,不能实例化也不能被继承,仅包含静态成员(方法、字段等)。主要用于提供工具方法或全局功能,如Math类。

  • 接口(Interface):用interface定义,不能实例化,仅包含成员声明(C# 8.0 + 支持默认方法)。类或结构可实现多个接口,强制实现类遵循统一规范,是实现多态和松耦合的核心机制。

特性与使用对比

特性抽象类(Abstract Class)密封类(Sealed Class)静态类(Static Class)接口(Interface)
实例化不能直接实例化(需派生类)可以实例化不能实例化不能实例化
继承性可被继承,派生类需实现抽象成员不能被继承不能被继承可被类 / 结构实现,类可多实现
成员类型抽象成员 + 具体成员仅非抽象成员仅静态成员成员声明(可含默认方法)
构造函数有(供派生类调用)有(自身实例化用)
访问修饰符成员可设任意修饰符成员可设任意修饰符成员默认为静态成员默认为public,不可修改
多继承支持类只能单继承无继承能力无继承能力类可实现多个接口(间接多继承)
典型用途定义基类(如 "形状" 基类)保护实现(如string类)工具方法(如Console类)定义规范(如IDisposable接口)

关键区别总结

  • 抽象类侧重 "是一种" 的继承关系,接口侧重 "具有某种能力" 的规范实现。
  • 密封类限制继承以保护实现,静态类通过静态成员提供无状态工具功能。
  • 接口是实现多态和代码解耦的关键,允许不相关的类遵循同一标准。

选择时需根据实际需求:需共享实现逻辑选抽象类,需跨类规范选接口,需禁止扩展选密封类,需工具方法集选静态类。

前几期内容:

C# 抽象类_抽象方法 (abstract关键字)https://blog.csdn.net/LZQqqqqo/article/details/149608176?spm=1001.2014.3001.5502

C# 密封类_密封方法 (seadled 关键字)https://blog.csdn.net/LZQqqqqo/article/details/149609758?spm=1001.2014.3001.5502

C# 静态类_静态方法_静态字段(static 声明静态的关键字 )https://blog.csdn.net/LZQqqqqo/article/details/149721489?spm=1001.2014.3001.5502

C# 接口(interface 定义接口的关键字)https://blog.csdn.net/LZQqqqqo/article/details/149722372?spm=1001.2014.3001.5502 

    http://www.dtcms.com/a/312134.html

    相关文章:

  • 数据处理和统计分析——09 数据分组
  • 【0基础PS】PS工具详解--图案图章工具
  • 洛谷刷题8.2
  • 基于LevitUnet的超声图像分割
  • 紧急救援!Oracle RAC节点驱逐元凶:私网Packet Reassembles Failed“包重组失败”一招救命
  • 开疆智能Modbus转Profinet网关连接PA6000H功率分析仪配置案例
  • 嵌入式——数据结构:基础知识和链表①
  • LQR个人笔记
  • Flutter开发 dart语言基本语法
  • Java 集合框架: LinkedHashSet
  • Redis7 String类型数据
  • 梦幻花瓣雨
  • spring学习笔记二
  • MC0364魔法链路
  • 全排列(回溯算法)
  • OLTP,OLAP,HTAP是什么,数据库该怎么选
  • 力扣-230.二叉搜索树中第K小的元素
  • 【学习笔记】MySQL技术内幕InnoDB存储引擎——第6章 锁
  • Amazon Q Developer:AI 增强编码生产力的未来
  • Arpg第二章——流程逻辑
  • 第六章第二节 定时器定时中断 定时器外部时钟
  • 电子病历:现代HIS系统不可或缺的核心组成部分
  • 12:java学习笔记:多维数组1
  • yolo为什么可以作为目标检测框架?它的底层原理是什么?
  • 客流人数统计准确率↑22%:陌讯动态追踪融合算法实战解析
  • 【高等数学】第七章 微分方程——第七节 常系数齐次线性微分方程
  • OSPF综合实验(一)
  • 分享一个可以测试离线服务器性能的脚本
  • 八股训练--JUC
  • 包装类、日期等常用类型