Una clase abstracta no se puede instanciar pero puede implementar algunos métodos ( o todos). Interfaces hacen oficial la separación entre implementación y la firma de una clase, mientras que una clase abstracta permite definir comportamiento común, pero por lo mismo es más fácil romper el código en cascada al hacer un cambio. La siguiente tabla compara interfaces y clases abstractas en C#
Interface | Abstract class |
Una clase puede heredar múltiples interfaces. | Una clase solo puede heredar de una clase abstracta. |
sin implementación por defecto. | Implementación por defecto. |
Solo Static final constants. | Constantes pueden ser estáticas y de instancia. |
La interface define las características periféricas de una clase. | Una clase abstracta define el comportamiento interno de una clase. |
Si las implementaciones solo se parecen en la firma, entonces es mejor usar interfaces. | Si las varias implementaciones usan comportamientos comunes, es mejor usar una clase abstracta. |
Ejecución Lenta. | Ejecución rápida. |
Es necesario revisar todas las implementaciones para agregar funcionalidad. | Se puede agregar el nuevo método a la clase abstracta y todas las implementaciones lo incorporan. |
http://www.javaworld.com/javaworld/javaqa/2001-04/03-qa-0420-abstract.html?page=1
http://www.codeproject.com/csharp/abstractsvsinterfaces.asp
C# Interface Based Development
1 comentario:
Gracias! Conciso y entendible, como debe de ser! ;)
Publicar un comentario