Clases abstractas, estáticas e interfaces

 

Clase abstracta vs Interface:



Desde que Java 8 introdujo las implementaciones por defecto en las interfaces, la diferencia a la hora de usarlas se ha diluido mucho, pero principalmente es conceptual. Cuando una clase hereda de otra clase (abstracta o no), estás definiendo qué es, pasar de una idea abstracta a una concreción. Además, estás definiendo una relación entre clases pero cuando implementas una interfaz, estás definiendo cómo se comporta. Es algo como definir y cumplir un contrato.

 

Clase Abstracta

Interfaz

La palabra clave abstract se usa para crear una clase abstracta y se puede usar con métodos.

La palabra clave de interface se usa para crear una interfaz, pero no se puede usar con métodos.

Una clase puede extender solo una clase abstracta.

Una clase puede implementar más de una interfaz.

Las variables no son definitivas por defecto. Puede contener variables no finales.

Las variables son finales por defecto en una interfaz.

Una clase abstracta puede proporcionar la implementación de una interfaz.

Una interfaz no puede proporcionar la implementación de una clase abstracta.

Puede tener métodos con implementaciones.

Proporciona una abstracción absoluta y no puede tener implementaciones de métodos.

Puede tener modificadores de acceso públicos, privados, estáticos y protegidos.

Los métodos son implícitamente públicos y abstractos en la interfaz de Java.

No admite herencias múltiples.

Es compatible con herencias múltiples.

Es ideal para la reutilización del código y la perspectiva de la evolución.

Es ideal para la declaración de tipo.


Comentarios

Entradas populares de este blog

Práctica sobre funciones

Diagramas para la documentación de las vistas propuestas en el modelo 4+1