可能重复:
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 {
...
}
答案 0 :(得分:1)
如果您预计要创建组件的多个版本,请创建一个抽象类。抽象类提供了一种简单易用的组件版本。通过更新基类,所有继承类都会随更改自动更新。另一方面,接口一旦创建就无法更改。如果需要新版本的接口,则必须创建一个全新的接口。
抽象类可以实现方法。
接口只能从其他接口继承。
抽象类可以从类和一个或多个接口继承。
接口不能包含字段。
答案 1 :(得分:0)
抽象类无法实例化,但可以包含代码,而接口只包含方法定义但不包含任何代码。您需要实现接口中定义的所有方法。
如果所有派生类的逻辑相同,最好选择抽象类而不是接口。
您可以实现多个接口,但只能从一个类继承。
答案 2 :(得分:0)
oAnn接口意味着对象和想要使用它的代码之间可能的最小耦合。抽象类意味着类之间有一些更强的关系,可能还有一些实现的共性。
当我们想要尽可能地分离关注点时(例如依赖注入)
,应该使用接口应该使用抽象类来模拟域中存在强关系的常见对象族