我也知道接口不是类。它是由单词接口定义的实体。接口没有实现,它只有方法签名或换句话说,只有方法的定义而没有方法体。与抽象类的一些相似之处是,它是用于为所有子类定义层次结构或定义特定集合方法及其参数的协议。它们之间的主要区别是,一个类可以实现多个接口,但只能继承一个抽象类。由于C#不支持多重继承,因此使用接口实现多重继承。
当我们创建一个接口时,我们基本上创建了一组没有任何实现的方法,这些方法必须被实现类覆盖。优点是它提供了一种让一个类成为两个类的一部分的方式:一部分来自继承层次结构,另一部分来自接口。
当我们创建抽象类时,我们创建了一个可能具有一个或多个已完成方法但至少有一个或多个方法未完成且声明为抽象的基类。如果抽象类的所有方法都未完成,则它与接口相同。
但是,我注意到在C# 8.0中有默认接口方法。
也许我之所以问这个问题是因为我只有1-2年的编程经验,但抽象类和接口现在的主要区别是什么?
我知道我们不能在接口中定义状态,这将是它们之间唯一的区别吗?
IFooTrait
或者只是FooTrait
)。 - Olivier Jacot-Descombes