可能重复:
When to use an interface instead of an abstract class and vice versa?
Interface vs Abstract Class (general OO)
我有
public interface MyInterface
{
void Execute();
}
并且
public abstract class MyAbstractClass
{
public abstract void Execute();
}
现在,当一个类实现它们时,抽象类和接口之间的区别是什么?当抽象类只有一个抽象方法时,类何时以及什么原因才能实现它们?
我昨天在接受采访时问过这个问题。我没有回答......
提前致谢
答案 0 :(得分:5)
即使这是重复的,我也会尝试为您澄清:
现在,当一个类实现它们时,抽象类和接口之间的区别是什么?
如果使用抽象类,区别在于您需要从抽象类继承然后覆盖抽象方法。
如果使用接口,则需要实现该方法,而不必继承此类,从而可以根据需要灵活地从其他类继承
当抽象类只有一个抽象方法时,类何时以及什么原因才能实现它们?
不要考虑方法的数量,以便在一方或另一方之间做出选择,想一想在使用方法时可以获得的权衡。
如果您决定使用抽象类,派生类将必须继承形成您的抽象类才能工作,因为您只能从C#中的一个单元类继承,你会对抽象类很紧张。
如果您实现了一个接口,您将能够从另一个类层次结构继承,换句话说,使用接口将为您提供最灵活的设计
现在抽象类非常有用,当你想编写一个基本代码段时,你的子类将继承,在这种情况下,你将在你的子类中编写更少的代码efectivley重用你的抽象类中编写的代码。您还可以覆盖抽象方法以提供自己的实现
答案 1 :(得分:1)
我们知道有很多方法可以实现一件事。但我们必须遵循最佳实践或使用专门的方法。
在您的场景中,接口和抽象类没有太大区别。但是您必须寻找接口和抽象之间差异的概念。 这是一篇很好的文章:Difference Interface and Abstract Class