【问题标题】:Whats the difference between an abstract class and interface? When would you want to use them? [duplicate]抽象类和接口有什么区别?您想什么时候使用它们? [复制]
【发布时间】:2012-01-05 11:30:51
【问题描述】:

可能重复:
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 {
    ...
}

【问题讨论】:

  • 欢迎来到 StackOverflow,但这个问题之前已经被问过(并回答过)(参见“相关”侧边栏)

标签: c# asp.net


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

    如果您希望创建组件的多个版本,请创建一个抽象类。抽象类提供了一种简单易行的方式来对组件进行版本控制。通过更新基类,所有继承类都会随着更改而自动更新。另一方面,接口一旦创建就不能更改。如果需要新版本的接口,则必须创建一个全新的接口。

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

    • 一个接口只能从另一个接口继承。

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

    • 接口不能包含字段。

    • 抽象类可以包含字段。

    【讨论】:

      【解决方案3】:

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

      当我们想要尽可能多地分离关注点时(例如依赖注入),应该使用接口

      应该使用抽象类来对领域中存在强关系的公共对象族建模

      【讨论】:

        猜你喜欢
        • 2010-11-13
        • 2013-02-17
        • 1970-01-01
        • 2010-12-27
        • 1970-01-01
        • 2012-04-28
        • 2019-10-17
        相关资源
        最近更新 更多