Interfaz vs clase abstracta en Java:¿cuál es la diferencia?
¿Qué es la interfaz?
La interfaz es un modelo que se puede utilizar para implementar una clase. La interfaz no contiene ningún método concreto (métodos que tienen código). Todos los métodos de una interfaz son métodos abstractos.
No se puede instanciar una interfaz. Sin embargo, se pueden crear instancias de clases que implementan interfaces. Las interfaces nunca contienen variables de instancia, pero pueden contener variables finales estáticas públicas (es decir, variables de clase constante)
¿Qué es la clase abstracta?
Una clase que tiene la palabra clave abstracta en su declaración se llama clase abstracta. Las clases abstractas deben tener al menos un método abstracto. , es decir, métodos sin cuerpo. Puede tener múltiples métodos concretos.
Las clases abstractas le permiten crear planos para clases concretas. Pero la clase heredera debería implementar el método abstracto.
Las clases abstractas no se pueden instanciar.
Razones importantes para usar interfaces
- Las interfaces se utilizan para lograr la abstracción.
- Diseñado para admitir la resolución de métodos dinámicos en tiempo de ejecución
- Te ayuda a lograr un acoplamiento flojo.
- Le permite separar la definición de un método de la jerarquía de herencia
Razones importantes para usar la clase abstracta
- Las clases abstractas ofrecen funcionalidad predeterminada para las subclases.
- Proporciona una plantilla para futuras clases específicas
- Te ayuda a definir una interfaz común para sus subclases
- La clase abstracta permite la reutilización del código.
Interfaz vs. Clase abstracta
Una clase abstracta le permite crear una funcionalidad que las subclases pueden implementar o anular, mientras que una interfaz solo le permite indicar la funcionalidad pero no implementarla. Una clase puede extender solo una clase abstracta mientras que una clase puede implementar múltiples interfaces.
Parámetros | Interfaz | Clase abstracta |
---|---|---|
Velocidad | Lento | Rápido |
Herencias Múltiples | Implementar varias interfaces | Solo una clase abstracta |
Estructura | Métodos abstractos | Métodos abstractos y concretos |
Cuándo usar | Mejora futura | Para evitar la independencia |
Herencia/Implementación | Una clase puede implementar múltiples interfaces | La clase puede heredar solo una clase abstracta |
Implementación predeterminada | Al agregar cosas nuevas a la interfaz, es una pesadilla encontrar todos los implementadores e implementar cosas recién definidas. | En el caso de la clase abstracta, puede aprovechar la implementación predeterminada. |
Modificadores de acceso | La interfaz no tiene modificadores de acceso. Todo lo definido dentro de la interfaz se asume como modificador público. | La clase abstracta puede tener un modificador de acceso. |
Cuándo usar | Es mejor usar la interfaz cuando varias implementaciones comparten solo la firma del método. Jerarquía polimórfica de tipos de valores. | Debe usarse cuando varias implementaciones del mismo tipo comparten un comportamiento común. |
Campos de datos | la interfaz no puede contener campos de datos. | la clase puede tener campos de datos. |
Predeterminado de herencia múltiple | Una clase puede implementar numerosas interfaces. | Una clase hereda solo una clase abstracta. |
Implementación | Una interfaz es abstracta, por lo que no puede proporcionar ningún código. | Una clase abstracta puede proporcionar un código predeterminado completo que debe anularse. |
Uso de modificadores de acceso | No puede usar modificadores de acceso para el método, propiedades, etc. | Puede usar una clase abstracta que contiene modificadores de acceso. |
Uso | Las interfaces ayudan a definir las habilidades periféricas de una clase. | Una clase abstracta define la identidad de una clase. |
Campos definidos | No se pueden definir campos | Una clase abstracta le permite definir tanto campos como constantes |
Herencia | Una interfaz puede heredar múltiples interfaces pero no puede heredar una clase. | Una clase abstracta puede heredar una clase y varias interfaces. |
Constructores o destructores | Una interfaz no puede declarar constructores o destructores. | Una clase abstracta puede declarar constructores y destructores. |
Límite de Extensiones | Puede extender cualquier número de interfaces. | Puede extender solo una clase o una clase abstracta a la vez. |
Palabra clave abstracta | En una palabra clave de interfaz abstracta, es opcional para declarar un método como abstracto. | En una clase abstracta, la palabra clave abstracta es obligatoria para declarar un método como abstracto. |
Tipo de clase | Una interfaz solo puede tener métodos abstractos públicos. | Una clase abstracta tiene métodos abstractos protegidos y públicos. |
Código de muestra para interfaz y clase abstracta en Java
El siguiente es un código de muestra para crear una interfaz y una clase abstracta en Java
Sintaxis de la interfaz
interface name{ //methods }
Ejemplo de interfaz Java:
interface Pet { public void test(); } class Dog implements Pet { public void test() { System.out.println("Interface Method Implemented"); } public static void main(String args[]) { Pet p = new Dog(); p.test(); } }
Sintaxis de clase abstracta
abstract class name{ // code }
Ejemplo de clase abstracta:
abstract class Shape { int b = 20; abstract public void calculateArea(); } public class Rectangle extends Shape { public static void main(String args[]) { Rectangle obj = new Rectangle(); obj.b = 200; obj.calculateArea(); } public void calculateArea() { System.out.println("Area is " + (b * b)); } }
Java
- Soldadura de derecha frente a soldadura de revés:¿Cuál es la diferencia?
- Hierro vs acero:¿Cuál es la diferencia?
- Clavos cortados frente a clavos de alambre:¿cuál es la diferencia?
- Corte por plasma vs corte por láser:¿Cuál es la diferencia?
- Torno frente a fresado:¿cuál es la diferencia?
- Fresado vs rectificado:¿Cuál es la diferencia?
- Clase abstracta de Java y métodos abstractos
- Interfaz Java
- Java - Abstracción
- Java - Interfaces
- Motor de CC frente a motor de CA:¿cuál es la diferencia?