news 2026/9/7 2:33:54

《C# 抽象类详解》

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
《C# 抽象类详解》

C#中类,抽象类,构造函数,结构体,接口,重载和重写

1. 类(Class)
  • 本质:引用类型,分配在托管堆上。
  • 特点支持继承(单继承)、支持多态、可以有字段/属性/方法/构造函数。
  • 场景:描述业务实体(如UserOrder),包含复杂状态和行为。
2. 结构体(Struct)
  • 本质:值类型,通常分配在栈上(或作为类成员时在堆上)。
  • 特点隐式密封(不能继承其他类,但可以实现接口);轻量级;适合存储小型、不可变的数据。
  • 注意:在 C# 10 之前,结构体不能定义显式的无参构造函数;C# 10 之后允许,但必须显式初始化所有字段。
3. 静态类(Static Class)
  • 本质:密封的抽象类(无法被实例化或继承)。
  • 特点:只能包含静态成员(方法、属性、字段);全局唯一。
  • 场景:工具类/帮助类(如MathFileHelper)。
4. 抽象类(Abstract Class)
  • 本质:部分实现的基类,无法被实例化。
  • 特点:可以包含状态(字段)、具体方法(有实现)和抽象方法(无实现,强制子类重写)。
  • 场景:提供公共基础设施(如Animal作为基类,提供Name属性,定义抽象方法MakeSound)。
5. 接口(Interface)
  • 本质:行为契约,仅定义成员签名(C# 8 之后允许默认实现,但核心理念仍是契约)。
  • 特点不包含实例字段;支持多重实现(一个类可实现多个接口)。
  • 场景:解耦、依赖注入、定义通用能力(如IDisposableIEnumerable)。
6. 构造函数(Constructor)
  • 实例构造函数:初始化对象的实例字段,配合new调用。
  • 静态构造函数:初始化静态成员,在类型第一次被引用前自动调用,且只执行一次(线程安全)。
  • 私有构造函数:防止外部实例化(常用于单例模式或工具类)。
7. 重载(Overload)—— 编译时多态
  • 定义:同一个类中,方法名相同,但参数列表(类型、数量、顺序)不同
  • 特征:与返回类型无关,与访问修饰符无关。
public void Log(string msg) { } public void Log(string msg, int code) { } // 重载
8. 重写(Override)—— 运行时多态
  • 定义:子类重新实现父类标记为virtualabstract的方法。
  • 特征:必须使用override关键字;不能重写sealedstatic方法。
  • 对比隐藏(newoverride会替换基类逻辑(多态生效),new仅隐藏基类成员(多态失效)

9.Sealed 方法(密封方法)

  • 必须配对使用sealed必须和override一起出现(即public sealed override void Method())。
  • 不能单独使用:你不能在普通方法(非重写方法)上直接写sealed,否则编译器报错。
  • 不能修饰静态方法:静态方法属于类型本身,不存在重写一说。

高频对比

对比维度抽象类 vs 接口
状态存储抽象类可以有实例字段(状态)接口不能有实例字段(C# 8 前)
实现代码可提供部分或全部实现传统仅签名(C# 8 后可有默认实现)
继承/实现单继承多重实现
构造函数可以有不能有
适用场景“是什么”(is-a)关系,如 狗是动物“能做什么”(can-do)关系,如 狗能跑
对比维度类 vs 结构体
类型引用类型(堆)值类型(栈)
继承支持单继承不支持(隐式密封),但可实现接口
性能赋值传递引用(开销较小)赋值传递副本(拷贝开销随字段增多)
可变性通常可变推荐设计为不可变(readonly struct
对比维度重载(Overload) vs 重写(Override)
绑定时机编译时绑定运行时绑定
作用范围同一类或继承链中,横向扩展继承链中,纵向替换
关键字无特殊关键字基类用virtual,派生类用override
签名要求必须不同(参数不同)必须相同(完全相同的方法签名)
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/8 1:19:24

计算机毕业设计之基于Java web技术实现的医院住院管理系统

随着网络科技的不断发展以及人们经济水平的逐步提高,网络技术如今已成为人们生活中不可缺少的一部分,而信息管理系统是通过计算机技术,针对用户需求开发与设计,该技术尤其在各行业领域发挥了巨大的作用,相比于以前的传…

作者头像 李华
网站建设 2026/9/8 1:19:24

触宝校招后端大数据笔试全解析:从Java到Spark的实战复盘

1. 触宝校招笔试概览:一场没有硝烟的技术摸底 2017年秋季,触宝科技的校招笔试走到第二批,岗位锁定“后端大数据”方向。坦白讲,当时看到这个岗位名字心里就明白,这绝不是单纯考Java或者单纯考Hadoop,而是要…

作者头像 李华
网站建设 2026/9/8 1:19:21

超高频光刻卡脖子难题,行业专家线下深度交流,一次性吃透工艺痛点

1.光刻是IC制造业中最为重要的一道工艺,占据了芯片制造中大约一半的步骤.光刻占所有成本的三分之一以上。通常可用光刻次数及所需Mask的块数来表示某生产工艺的难易程度。光刻工艺在晶体行业的应用是典型的半导体工艺的延伸发展。2.光刻就是将掩膜版上的几何图形转移到涂有一层…

作者头像 李华
网站建设 2026/9/5 7:13:32

智能体持久化自主行为:从对话到自主工作的架构设计与实践

最近半年,AI 应用开发者的普遍焦虑是:Agent Demo 很好做,但真正想把它放到业务里长期跑,总会发现差一口气。聊天、检索、生成报告,这些单轮能力都不弱,可一旦要求一个 Agent 连续工作一个星期,期…

作者头像 李华