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
Publicar un comentario