gpt4 book ai didi

oop - 我们可以在 C# 中用带默认方法的接口(interface)替换抽象类吗

转载 作者:行者123 更新时间:2023-12-04 01:36:34 25 4
gpt4 key购买 nike

在 C# 8.0 中,我们有一个新功能,我们可以在接口(interface)中提供默认方法实现,该方法也可以被其实现类覆盖。

我们曾经使用带有实例方法的抽象类来为其所有实现类提供通用功能。

现在我可以将那些具有实例方法的抽象类替换为具有来自 C# 8.0 的默认方法实现的接口(interface)吗?

最佳答案

不,抽象类仍然有一席之地。特别是,抽象类可以声明字段(如今通常通过自动实现的属性),而接口(interface)仍然不能。他们还可以定义构造函数,并在其中执行验证。

这是一个你不能用界面做的事情的例子:

public abstract class NamedObject
{
public string Name { get; }

protected NamedObject(string name) =>
Name = name ?? throw new ArgumentNullException(nameof(name));

// Abstract methods here
}

显然它不会真的被称为NamedObject - 有一个业务特定的原因让它是抽象的,这将决定名称。但是这里的行为是不能放在接口(interface)中的行为。

关于oop - 我们可以在 C# 中用带默认方法的接口(interface)替换抽象类吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59299305/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com