C#抽象类 & 接口一页纸速记(面试随身背诵)

抽象类&接口一页纸速记(面试随身背诵)

一、核心区别

  1. 继承
    抽象类:单继承 class A:AbsClass
    接口:多实现 class A:IA,IB,IC
  2. 成员
    抽象类:字段、构造函数、private/protected、普通方法+抽象方法
    接口:无实例字段、无构造;C#7.3只有抽象方法;C#8+支持默认实现
  3. 关系
    抽象类:is-a(是一类)
    接口:can-do(拥有能力)

二、优缺点

抽象类

✅优点:复用字段、复用公共代码、封装、构造统一初始化
❌缺点:单继承受限、耦合高

接口

✅优点:多实现、低耦合、适配DI、单元Mock、插件化
❌缺点:不能共享字段;C#7.3新增抽象方法全实现类需改代码

三、选型口诀

共有属性、公用代码、父子关系→抽象类
契约规范、多能力、解耦分层→接口
项目最佳:接口定规范,抽象抽公用,实体继承抽象

四、经典业务设计(支付举例)

  1. IPayment 接口:统一Pay、查单签名契约
  2. BasePay:IPayment 抽象类:封装通用签名、生成订单
  3. WeChatPay/AliPay:继承BasePay,重写Pay独有逻辑

五、高频考点

  1. 抽象类、接口都不能直接new实例
  2. 接口成员默认public,不能写访问修饰符
  3. 任何C#版本接口不能定义实例字段
  4. C#8接口默认实现:新增方法不用修改原有实现类

六、面试简答万能模板

从继承、成员、设计关系三点区分;共用数据代码用抽象,契约扩展解耦用接口,实际项目接口+抽象组合开发。

posted @ 2026-06-04 07:31  人生就是修炼  阅读(8)  评论(0)    收藏  举报