我们可以用C#中的带有默认方法的接口替换抽象类吗

贾甘·莫汉迪

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

我们曾经拥有带有实例方法的Abstract类,以为其所有实现类提供通用功能。

现在,我可以将具有实例方法的那些Abstract类替换为具有从C#8.0起病房的Default方法实现的接口吗?

乔恩·斯基特

不,抽象类仍然有自己的位置。特别是,抽象类可以声明字段(这些天通常通过自动实现的属性),而接口仍然不能声明。他们还可以定义构造函数,并在其中执行验证。

这是您无法使用界面执行的示例:

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

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

    // Abstract methods here
}

显然,它并不会真正被调用NamedObject-有一个特定于业务的原因使其抽象,这将决定名称。但是这里的行为是不能放在接口中的行为。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

我们可以用具有扩展方法的接口替换抽象类吗?

来自分类Dev

我们可以用具有扩展方法的接口替换抽象类吗?

来自分类Dev

我们可以在php中创建没有抽象方法的抽象类吗?

来自分类Dev

我们只能在 c# 中的接口类上使用抽象类的场景

来自分类Dev

我们可以使用反射调用抽象类的私有方法吗?

来自分类Dev

我们可以用C ++中的非模板类“包装”模板类吗?

来自分类Dev

我们可以创建抽象类的对象吗?

来自分类Dev

在c#的抽象类中转换带有静态字段的java接口是最好的选择吗?

来自分类Dev

我们如何确定方法是属于抽象类还是接口?

来自分类Dev

我们可以在C#的基类中捕获子类方法的异常吗?

来自分类Dev

我们可以在C#的基类中捕获子类方法的异常吗?

来自分类Dev

如果我们可以简单地重写超类的方法或使用抽象类,为什么还要使用接口?

来自分类Dev

我们可以用连接替换嵌套的子查询吗 - SQL

来自分类Dev

我们可以用R中的新字段填充列吗?

来自分类Dev

我们可以用C ++返回一个函数吗?

来自分类Dev

我们可以在类中声明密封方法吗

来自分类Dev

为什么我们不能在WCF中使用抽象类而不是接口?

来自分类Dev

方法中的变量是否是临时的。那为什么我们可以用C ++访问它们呢?

来自分类Dev

我们可以在C ++中的类中定义哈希码方法吗

来自分类Dev

同步排序,File1的未配对记录在F2文件中没有记录的空间。我们可以用ZEROS替换那些特定列的空格吗?

来自分类Dev

我们可以从剃刀视图调用接口方法吗?

来自分类Dev

当我的抽象类实现接口时,我应该创建抽象方法吗?

来自分类Dev

有什么方法可以实现抽象类,它是从 C++ 中的其他抽象类多重继承的?

来自分类Dev

我们是否继承或实现抽象类?

来自分类Dev

我可以在抽象类中创建静态工厂方法吗?

来自分类Dev

在C#中的抽象类中,私有构造函数有什么用?

来自分类Dev

C ++中抽象类(接口)的数组

来自分类Dev

我们可以用祖鲁语的jdk我们的生产系统1.8免费的吗?

来自分类Dev

具有返回不同类型子项的抽象类中的C#抽象方法

Related 相关文章

  1. 1

    我们可以用具有扩展方法的接口替换抽象类吗?

  2. 2

    我们可以用具有扩展方法的接口替换抽象类吗?

  3. 3

    我们可以在php中创建没有抽象方法的抽象类吗?

  4. 4

    我们只能在 c# 中的接口类上使用抽象类的场景

  5. 5

    我们可以使用反射调用抽象类的私有方法吗?

  6. 6

    我们可以用C ++中的非模板类“包装”模板类吗?

  7. 7

    我们可以创建抽象类的对象吗?

  8. 8

    在c#的抽象类中转换带有静态字段的java接口是最好的选择吗?

  9. 9

    我们如何确定方法是属于抽象类还是接口?

  10. 10

    我们可以在C#的基类中捕获子类方法的异常吗?

  11. 11

    我们可以在C#的基类中捕获子类方法的异常吗?

  12. 12

    如果我们可以简单地重写超类的方法或使用抽象类,为什么还要使用接口?

  13. 13

    我们可以用连接替换嵌套的子查询吗 - SQL

  14. 14

    我们可以用R中的新字段填充列吗?

  15. 15

    我们可以用C ++返回一个函数吗?

  16. 16

    我们可以在类中声明密封方法吗

  17. 17

    为什么我们不能在WCF中使用抽象类而不是接口?

  18. 18

    方法中的变量是否是临时的。那为什么我们可以用C ++访问它们呢?

  19. 19

    我们可以在C ++中的类中定义哈希码方法吗

  20. 20

    同步排序,File1的未配对记录在F2文件中没有记录的空间。我们可以用ZEROS替换那些特定列的空格吗?

  21. 21

    我们可以从剃刀视图调用接口方法吗?

  22. 22

    当我的抽象类实现接口时,我应该创建抽象方法吗?

  23. 23

    有什么方法可以实现抽象类,它是从 C++ 中的其他抽象类多重继承的?

  24. 24

    我们是否继承或实现抽象类?

  25. 25

    我可以在抽象类中创建静态工厂方法吗?

  26. 26

    在C#中的抽象类中,私有构造函数有什么用?

  27. 27

    C ++中抽象类(接口)的数组

  28. 28

    我们可以用祖鲁语的jdk我们的生产系统1.8免费的吗?

  29. 29

    具有返回不同类型子项的抽象类中的C#抽象方法

热门标签

归档