具有默认实现的接口和抽象类有什么区别?



C# 8.0 引入了一种新的语言功能 - 接口成员的默认实现。

public interface IRobot
{
void Talk(string message)
{
Debug.WriteLine(message);
}
}

新的默认接口实现提供了特征语言的元素。然而,这也模糊了抽象类和接口之间的界限。

现在使用抽象类而不是具有默认实现的接口有什么好处?

很有趣,但 CLR 将默认接口实现为抽象类。 CLR 支持多重继承。 这是一篇关于这个的好文章。

在 C# 中,当您需要实现(在本例中实际上是从多个接口继承(时,您需要默认接口,因为该语言不允许从多个类继承。

抽象类还允许您具有状态。 接口中不允许使用状态,即字段。

相关内容

  • 没有找到相关文章

最新更新