Interfaz frente a clase abstracta en Java: ¿Cuál es la diferencia?

¿Qué es una interfaz?

La interfaz es un modelo que se puede utilizar para implementar una clase. No hay métodos concretos en la interfaz (métodos que tienen código). Todos los modos de interfaz son métodos abstractos.

La interfaz no se puede agregar instantáneamente. Sin embargo, las clases que implementan interfaces se pueden agregar instantáneamente. Las interfaces nunca son variables de conveniencia, pero pueden contener variables finales estáticas públicas (es decir, variables de clase fija)

¿Que es una clase abstracta?

Una clase en la que se declara la palabra clave abstracta se denomina clase abstracta. Las clases abstractas deben tener al menos un modo abstracto. , es decir, métodos sin cuerpo. Puede tener métodos multicomponente.

Las clases abstractas le permiten crear planos para clases concretas. Pero la clase de herencia debería aplicar el método abstracto.

Las clases abstractas no se pueden tomar instantáneamente.

Razones importantes para utilizar interfaces

  • Las interfaces se utilizan para lograr la abstracción.
  • Diseñado para admitir resolución de modo dinámico en tiempo de ejecución
  • Te ayuda a lograr un apareamiento suelto.
  • 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 una funcionalidad preestablecida para las subclases.
  • Proporciona una plantilla para clases futuras específicas.
  • Le ayuda a definir una interfaz común para sus subclases.
  • Permite un código de clase abstracto reutilizable.

Interfaz vs. Clase abstracta

Una clase abstracta le permite realizar funcionalidades que pueden ser aplicadas o anuladas por subclases, pero una interfaz solo le permite especificar la funcionalidad pero no aplicarla. Una clase solo puede extender una clase abstracta y se puede implementar una clase de interfaz múltiple.

ParámetrosInterfazClase abstracta
VelocidadLentamenteRápido
Múltiples legadosAplicar algunas interfacesUna clase abstracta
EstructuraMétodos abstractosMétodos abstractos y concretos
Cuándo usarMejora futuraEvita la independencia
Legado / ImplementaciónLa clase puede implementar múltiples interfacesLa clase solo puede heredar una clase abstracta
Implementación predeterminadaAgregar cosas nuevas a la interfaz es una pesadilla para encontrar a todos los ejecutivos e implementar las cosas recién definidas.Para Abstract Class, puede aprovechar la aplicación predeterminada.
Modificadores de accesoNo hay modificadores de acceso en la interfaz. Se asume que todo lo definido dentro de la interfaz es un moderador público.La clase abstracta puede tener un modificador de acceso.
Cuándo usarLa interfaz se utiliza mejor cuando varias implementaciones diferentes solo tienen la firma del método. Jerarquía polimórfica de tipos de valor.Debe usarse cuando las implementaciones comunes tienen diferentes implementaciones similares.
Campos de informaciónla interfaz no puede contener campos de datos.la clase puede tener campos de datos.
Valor predeterminado heredado múltipleUna clase puede implementar múltiples interfaces.Una clase solo obtiene una clase abstracta.
ImplementaciónTiene una interfaz abstracta por lo que no puede proporcionar ningún código.Una clase abstracta puede dar un código completo predeterminado que debe anularse.
Usar modificadores de accesoNo puede usar modificadores de acceso para el modo, propiedades, etc.Puede utilizar una clase abstracta que contenga modificadores de acceso.
UsarLas interfaces ayudan a definir las capacidades periféricas de la clase.Una clase abstracta define la identidad de clase.
Áreas definidasNo se pueden definir camposUna clase abstracta te permite definir campos y constantes.
HerenciaPuede heredar una interfaz múltiple pero no puede heredar una clase.Una clase abstracta puede heredar múltiples clases e interfaces.
Constructor o destructoresLos constructores o destructores de interfaces no pueden confirmarlo.Una clase abstracta puede declarar constructores y destructores.
Limitación de extensionesPuede expandir cualquier número de interfaces.Solo puede extender una clase o una clase abstracta a la vez.
Palabra clave abstractaEn una palabra clave de interfaz abstracta, es opcional 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 claseLa interfaz solo puede tener modos abstractos públicos.La clase abstracta tiene métodos abstractos de protección y público.

Código de muestra para la interfaz Java y la clase abstracta

El siguiente es un código de muestra para crear una interfaz y una clase abstractas 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 resumen de clase:


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 " + (obj.b * obj.b));
    }
}

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *