Red de conocimiento de recetas - Recetas de frutas - ¿Cuándo usar clases abstractas y cuándo usar interfaces?

¿Cuándo usar clases abstractas y cuándo usar interfaces?

Tanto las interfaces como las clases abstractas describen características públicas generales. En términos generales, una relación fuerte "es-a" describe claramente la relación padre-hijo y debe modelarse con clases, por ejemplo, una manzana es una especie de fruta, mientras que una relación débil "es-a" significa que el objeto tiene cierta; atributos que son adecuados para su uso con la interfaz para modelar, por ejemplo, se puede comer una manzana.

Dado que una subclase solo puede extender una clase principal y puede implementar múltiples interfaces, las interfaces son más flexibles que las clases abstractas. Pero las interfaces no pueden contener métodos concretos, mientras que las clases abstractas sí. Para combinar las ventajas de ambas, puede crear una interfaz y una clase abstracta (clase de conveniencia) que implemente la interfaz y luego decidir qué interfaz usar caso por caso.

La inmutabilidad de la interfaz significa que no cambiará la forma en que se usa la interfaz, pero puede cambiar la implementación específica de la interfaz. La implementación de la interfaz es transparente para los usuarios. la implementación de la interfaz, siempre y cuando sepan que simplemente funciona cómo se usa la interfaz, por lo que la inmutabilidad de la interfaz brinda comodidad a los usuarios.

Lo mismo ocurre con las clases abstractas. La implementación interna se puede cambiar según sea necesario (como mejorar los algoritmos), pero los métodos proporcionados a los usuarios no deben cambiarse fácilmente.