C#面试精简背诵版|抽象类 & 接口(简答+答题话术)
一、核心区别简答(必背)
- 继承规则
抽象类:单继承,一个类只能继承一个抽象类;
接口:多实现,一个类可实现多个接口。 - 成员区别
抽象类:可包含字段、构造、私有/受保护成员、普通方法、抽象方法;
接口:不能有实例字段、构造,C#7.3前只有抽象签名,C#8+支持默认实现。 - 设计关系
抽象类代表 is-a(是一种);
接口代表 can-do(具备某项能力)。
二、优缺点简答
抽象类
优点:能复用字段与公共代码、可封装、构造函数统一初始化;
缺点:单继承限制、继承耦合度高,不利于多能力扩展。
接口
优点:多实现灵活、低耦合、利于DI依赖注入、单元测试Mock;
缺点:老版本无法共用字段,新增抽象方法所有实现类都要改动。
三、如何选择(面试标准答案)
- 选抽象类:多个子类有共同属性、重复代码,存在父子从属关系(is-a)。
- 选接口:定义功能契约、多能力组合、无关类统一规范、分层解耦。
- 项目最优方案:接口定义规范 + 抽象类封装公共逻辑 + 具体类继承实现。
四、高频面试一句话总结
有共同状态和复用代码用抽象类,做契约、多扩展、解耦用接口。
