2010-11-08 20 views
8

Duplicar posible:
Interface vs Abstract Class (general OO)¿Cuál es la diferencia entre una interfaz y una clase abstracta?

No estoy muy claro en la diferencia.

Gracias

+3

hay una gran cantidad de mensajes en este:. Http://stackoverflow.com/questions/761194/interface-vs-abstract-class-general-oo – skaz

+0

~ almendra alegrías tienen los frutos secos, los montones no lo hacen ~ Excepto reemplazar "Almond Joys" con clases abstractas, "Mounds" con interfaces y "nuts" con algunos métodos concretos. – Powerlord

Respuesta

17

Ellos son muy similares, pero hay algunas diferencias técnicas importantes:

  • Una clase abstracta permite proporcionar una implementación por defecto para algunos de los métodos, pero una interfaz no le permiten proporcionar cualquier implementación.
  • Puede implementar múltiples interfaces pero solo puede heredar de una clase abstracta.

Estas diferencias afectan a cómo deben usarse las dos técnicas:

  • Se debe utilizar una interfaz para definir un contrato .
  • Una clase abstracta puede ser útil para código de reutilización ... pero tenga en cuenta que no es la única forma de reutilizar el código. También debe considerar otros enfoques, como la contención.
4

Una interfaz no permite la definición de ninguno de los métodos miembros, mientras que una clase abstracta permite definir algunos o todos. Sin embargo, una clase solo puede extender una clase (abstracta o no) pero puede implementar tantas interfaces como desee.

3

Me gusta pensar en una interfaz como un contrato. cualquier clase que implemente una interfaz, debe proporcionar detalles sobre qué hacer cuando se llama a cualquier método definido en el contrato. Una clase abstracta es una clase que define un conjunto de comportamientos reales, es decir, algo más que un contrato que se implementará más tarde, pero no se puede crear una instancia de esa clase.

Cuestiones relacionadas