三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

C#抽象类 接口(简答 + 答题话术)

C#抽象类  接口(简答 + 答题话术)

C#面试精简背诵版|抽象类 & 接口(简答+答题话术)

一、核心区别简答(必背)

  1. 继承规则
    抽象类:单继承,一个类只能继承一个抽象类;
    接口:多实现,一个类可实现多个接口。
  2. 成员区别
    抽象类:可包含字段、构造、私有/受保护成员、普通方法、抽象方法;
    接口:不能有实例字段、构造,C#7.3前只有抽象签名,C#8+支持默认实现。
  3. 设计关系
    抽象类代表 is-a(是一种);
    接口代表 can-do(具备某项能力)。

二、优缺点简答

抽象类

优点:能复用字段与公共代码、可封装、构造函数统一初始化;
缺点:单继承限制、继承耦合度高,不利于多能力扩展。

接口

优点:多实现灵活、低耦合、利于DI依赖注入、单元测试Mock;
缺点:老版本无法共用字段,新增抽象方法所有实现类都要改动。

三、如何选择(面试标准答案)

  1. 选抽象类:多个子类有共同属性、重复代码,存在父子从属关系(is-a)。
  2. 选接口:定义功能契约、多能力组合、无关类统一规范、分层解耦。
  3. 项目最优方案:接口定义规范 + 抽象类封装公共逻辑 + 具体类继承实现。

四、高频面试一句话总结

有共同状态和复用代码用抽象类,做契约、多扩展、解耦用接口。

← 返回列表