什么是抽象类和接口之间的区别?你什么时候想用它们?

时间:2011-11-24 09:19:35

标签: c# asp.net

  

可能重复:
  When to use an interface instead of an abstract class and vice versa?
  Difference between Interface, abstract class, sealed class, static class and partial class in C#?

public class Guru{
    public Enemy(int x, int y, int health, int attack, ...) {
        ...
    }
    ...
}
public class UserDefinedClass extends Enemy {
    ...
}

3 个答案:

答案 0 :(得分:1)

如果您预计要创建组件的多个版本,请创建一个抽象类。抽象类提供了一种简单易用的组件版本。通过更新基类,所有继承类都会随更改自动更新。另一方面,接口一旦创建就无法更改。如果需要新版本的接口,则必须创建一个全新的接口。

  • 接口无法实现方法。
  • 抽象类可以实现方法。

  • 接口只能从其他接口继承。

  • 抽象类可以从类和一个或多个接口继承。

  • 接口不能包含字段。

  • 抽象类可以包含字段。

答案 1 :(得分:0)

抽象类无法实例化,但可以包含代码,而接口只包含方法定义但不包含任何代码。您需要实现接口中定义的所有方法。

如果所有派生类的逻辑相同,最好选择抽象类而不是接口。

您可以实现多个接口,但只能从一个类继承。

答案 2 :(得分:0)

oAnn接口意味着对象和想要使用它的代码之间可能的最小耦合。抽象类意味着类之间有一些更强的关系,可能还有一些实现的共性。

当我们想要尽可能地分离关注点时(例如依赖注入)

,应该使用接口

应该使用抽象类来模拟域中存在强关系的常见对象族