Contenido del Curso
Java POO
Java POO
Clase Abstracta vs Interfaz
¿Cuál elegir?
De los capítulos anteriores, habrás notado que las abstract classes
y las interfaces
son bastante similares. Sin embargo, existen diferencias entre ellas. Para ir al grano, se puede decir que en la práctica, las interfaces suelen ser preferidas sobre las clases abstractas. Pero veamos por qué sucede esto.
¿Cuál es la diferencia?
Para empezar, necesitamos comprender las diferencias entre una clase abstracta y una interfaz. Revisemos la lista:
Sintaxis:
abstract class
al declarar una clase abstracta yinterface
al declarar una interfaz;Palabra clave de herencia:
extends
para heredar de una clase abstracta, yimplements
para heredar de una interfaz;Nombres para subclases: Una subclase de una
abstract class
se denomina subclase o clase heredada, mientras que una subclase de unainterface
se llama clase - implementación;Cantidad de herencias: Solo se puede heredar de una sola clase abstracta, mientras que se puede heredar de múltiples interfaces;
Una
abstract class
puede tener tanto métodos implementados como métodos abstractos. A partir de Java 8, las interfaces también pueden tener métodosdefault
, lo cual se discutirá más adelante en esta sección;Los métodos en una clase abstracta pueden tener cualquier modificador de acceso, mientras que en las interfaces, solo se permite el modificador de acceso
public
.
Nota
También se puede heredar simultáneamente de una clase abstracta e implementar una interfaz. Primero se utiliza la palabra clave
extends
, y luego se usaimplements
. La sintaxis es la siguiente:class ClassName extends AbstractClass implements Interface {}
En términos simples, piensa en una clase abstracta como una clase que proporciona cierta funcionalidad y establece ciertas reglas pero deja algunas partes para que sus subclases las completen. Una interfaz, en cambio, es como una lista de verificación que una clase debe cumplir, especificando qué métodos debe tener, sin proporcionar ningún código real.
¡Gracias por tus comentarios!