c# - 具有默认实现的接口和抽象类之间有什么区别?
问题描述
C# 8.0 引入了一个新的语言特性——接口成员的默认实现。
public interface IRobot
{
void Talk(string message)
{
Debug.WriteLine(message);
}
}
新的默认接口实现提供了特征语言的元素。然而,这也模糊了抽象类和接口之间的界限。
现在使用抽象类而不是默认实现的接口有什么好处?
解决方案
很有趣,但是 CLR 将默认接口实现为抽象类。CLR 支持多重继承。 这是一篇关于此的好文章。
在 C# 中,当您需要实现(在这种情况下实际上继承自)多个接口时,您需要默认接口,因为该语言不允许您从多个类继承。
抽象类还允许您拥有state。接口中不允许状态,即字段。
推荐阅读
- javascript - 无法在异步 forEach 循环中向我的数组添加元素
- if-statement - Ocaml : 将模式匹配表达式转换为 if 表达式 (if...then...else)
- parse-platform - 使用 graphql 将项目插入数组 - 解析服务器
- excel - 在 Excel 365 中将上下文菜单与自定义界面相结合
- tensorflow - 用于图像序列分类的 CNN 和 LSTM
- django - 如何扩展 Django 的静态模板标签
- javascript - 使用带有 Javascript 的模板标签时如何向元素添加事件
- javascript - 每次迭代使用不同参数的 DOM 操作 onclick 函数
- python-3.x - Airflow 实例不通过 SFTPsensor 连接到边缘节点服务器(SSH 连接类型)
- c++ - 提升:多精度