What is the difference between an interface and an abstract class that has only one abstract method?
Possible Duplicate:
When to use an interface instead of an abstract class and vice versa?
Interface vs Abstract Class (general OO)
我有
1 2 3 4 | public interface MyInterface { void Execute(); } |
和
1 2 3 4 | public abstract class MyAbstractClass { public abstract void Execute(); } |
当一个类实现抽象类和接口时,它们之间的区别是什么?当一个抽象类只有一个抽象方法时,什么时候以及什么时候类实现它们?
昨天在一次采访中问我这个问题,我没能回答。
提前谢谢
即使这是一个副本,我也会尽力为您澄清:
Now what will be the difference between the abstract class and the interface when a class will implement them?
如果使用抽象类,区别在于需要从抽象类继承,然后重写抽象方法。
如果使用接口,则需要实现方法,而不从该类继承,如果需要,还可以灵活地从另一个类继承。
When and what will be the reason for a class to implemenet them when an abstract class has only one abstract method?
不要为了在两种方法之间进行选择而考虑方法的数量,要考虑在使用一种方法与另一种方法时所得到的权衡。
如果决定使用抽象类,派生类将必须从抽象类继承才能工作,而且由于只能从C中的一个类继承,因此您将与抽象类紧密相连。
如果实现一个接口,您将能够从另一个类层次结构继承,换句话说,使用接口将为您提供最灵活的设计
现在,当您想要编写代码的基本部分时,抽象类真的很有用,您的子类将继承这些代码,在这种情况下,您将在子类中编写更少的代码,这意味着可以重用抽象类中编写的代码。此外,您还可以重写抽象方法来提供自己的实现。
正如我们所知道的,OOP有很多实现一件事的方法,但是我们必须遵循最佳实践或使用专门的方法。
在您的场景中,接口和抽象类没有很大的区别,但是您必须了解接口和抽象类之间的区别概念。这是一篇很好的文章:差分接口和抽象类