接口和只有一个抽象方法的抽象类有什么区别?

2 c# oop abstract-class interface

可能重复:
何时使用接口而不是抽象类,反之亦然?
接口与抽象类(通用OO)

我有

public interface MyInterface
{
  void Execute();
}
Run Code Online (Sandbox Code Playgroud)

public abstract class MyAbstractClass
{
  public abstract void Execute();
}
Run Code Online (Sandbox Code Playgroud)

现在,当一个类实现它们时,抽象类和接口之间的区别是什么?当抽象类只有一个抽象方法时,何时以及什么是类实现它们的原因?

昨天在接受采访时我问过这个问题.我没有回答..

提前致谢

Jup*_*aol 5

即使这是重复,我也会尝试为您澄清:

现在,当一个类实现它们时,抽象类和接口之间的区别是什么?

如果使用抽象类,区别在于您需要从抽象类继承然后重写抽象方法.

如果使用接口,则需要实现该方法,而不必继承此类,从而可以根据需要灵活地从另一个类继承

当抽象类只有一个抽象方法时,何时以及什么是类实现它们的原因?

不要考虑方法的数量,以便在一种或另一种之间进行选择,考虑在使用一种方法与另一种方法时所获得的权衡.

  • 如果您决定使用抽象类,则派生类必须从您的抽象类继承才能工作,并且因为您只能从C#中的一个单元继承,所以您将对抽象类很紧密.

  • 如果您实现了一个接口,您将能够从另一个类层次结构继承,换句话说,使用接口将为您提供最灵活的设计

现在抽象类非常有用,当你想编写一个基本的代码段时,你的子类将继承,在这种情况下,你将在你的子类中编写更少的代码efectivley重用抽象类中编写的代码.您还可以覆盖抽象方法以提供自己的实现