C#的接口与抽象类非常类似:
在使用上,一个没有提供非抽象方法的抽象类与一个接口是类似的.然而,我们需要注意以下几点:
- 一个类可以实现任意多个接口,但只能对一个抽象类进行子类化.
- 一个抽象类可以包括非抽象方法,而一个接口的所有方法在效果上都是抽象的。
- 一个抽象类可以声明并使用变量,而一个接口不行。
- 一个抽象类中的方法的访问修饰符可以是public、internal、protected internal或者是private,而接口成员的访问修饰符默认情况下都是public,而且,在声明接口成员时,不允许使用访问修饰符(甚至不允许用public修饰符)。
- 一个抽象类可以定义构造函数,一个接口不行。