¿Cuál es la diferencia entre la clase abstracta y la interfaz en Java?

¿Cuál es la diferencia entre la clase abstracta y la interfaz en Java?

Java proporciona múltiples formas de proporcionar abstracción de datos, como interfaces Java y clases de abstracto de Java. Tanto la interfaz como la clase abstracta proporcionan seguridad ocultando los detalles de implementación interna y solo mostrando/resaltando los detalles necesarios. Sin embargo, existen numerosas similitudes y distinciones entre clases abstractas e interfaces.

Esta publicación lo ayudará en los aspectos de la lista de interfaces Java y las clases abstractas:

  1. ¿Qué es una interfaz Java?.
  2. ¿Qué es una clase abstracta de Java?.
  3. Comparación basada en similitudes.
  4. Interfaz Java Abstract Clase vs Java.

Vamos a empezar!

¿Qué es una interfaz Java?

Es una plantilla para una clase que contiene algunos métodos abstractos y variables estáticas/finales. En Java, las interfaces proporcionan solo una declaración de método, mientras que las clases infantiles/implementadas proporcionan la definición de método.

¿Qué es una clase abstracta de Java?

Cualquier clase de Java que tenga al menos un método de resumen (solo método Declaración) se conoce como clase de resumen en Java.

Comparación basada en similitudes

A continuación se enumeran algunos aspectos importantes de las interfaces de Java y las clases abstractas:

  • En Java, no podemos crear el objeto/instancia de ambas interfaces o clases abstractas.
  • Ambos solo proporcionan detalles necesarios al usuario.
  • Ambos proporcionan abstracción.
  • Ambos pueden tener métodos/funciones abstractas.
  • Ambos ocultan la información/detalles de implementación de los usuarios.

Interfaz Java Abstract Clase vs Java

Las palabras clave "abstractas" e "interfaz" se utilizan en Java para crear/declarar las clases abstractas e interfaces respectivamente.

En las interfaces, todos los miembros se consideran públicos de forma predeterminada, por lo que no es necesario especificar el modificador de acceso para los miembros de las interfaces. Mientras que en las clases abstractas no existe tal restricción y, por lo tanto, se puede utilizar ningún modificador de acceso para los miembros de clases abstractas como público, protegido, etc.

La sintaxis básica de una clase abstracta y una interfaz se muestra en los fragmentos dados a continuación:

Clase abstracta

ClassName de clase abstracta pública
Public Abstract void MethodName ();

Interfaz

interfaz pública interfacename
void MethodName ();

Las interfaces deben tener todos los métodos abstractos, mientras que las clases abstractas pueden tener métodos abstractos y no abstractos.

La interfaz solo puede tener miembros estáticos, mientras que las clases abstractas pueden tener miembros estáticos y no estáticos.

Las interfaces solo tienen miembros "finales" (inmutables), mientras que las clases abstractas pueden tener miembros finales y no finales.

Las interfaces no tienen ningún constructor, mientras que las clases abstractas tienen constructores definidos por el usuario o predeterminados.

Se puede lograr una herencia múltiple utilizando interfaces, mientras que las clases abstractas no admiten la herencia múltiple.

En Java, la clase abstracta puede heredar otra clase y puede implementar muchas interfaces, por otro lado, una interfaz Java solo puede extender otra interfaz.

Ejemplo

El ejemplo dado a continuación le permitirá comprender cómo funcionan las interfaces y las clases abstractas en Java:

Interfaz FirstInterface
void MethodOne ();
void Methodtwo ();
void MethodThree ();

Abstract Class AbstractClass implementa FirstInterface
public void MethodThree ()
Sistema.afuera.println ("Método de implementación de clase abstracta");


Clase NormalClass extiende AbstractClass
public void MethodOne ()
Sistema.afuera.println ("Implementación de MethodOne");

public void Methodtwo ()
Sistema.afuera.println ("Implementación de métodos");

public void MethodThree ()
Sistema.afuera.println ("Implementación de métodos");


clase pública InterfaceExample
public static void main (string [] args)
FirstInterface obj = new ClassTheRe ();
obj.MethodOne ();
obj.MethodTwo ();
obj.MethodThree ();

En este ejemplo, creamos una interfaz "FirstInterface", una clase abstracta "Clase abstracta", y dos clases más normales de Java y realizaron las siguientes funcionalidades:

  • El First Interface contiene tres métodos abstractos.
  • El Clase abstracta implementos First Interface y anula el MethodThree ().
  • El Clase normal extiende el Clase abstracta y y anula el MethodOne () y MethodTwo () de First Interface.

El InterfaceExample es la clase principal desde donde creamos el método principal e invocamos todos los métodos de First Interface:

Salida verificó el funcionamiento del programa Java dado anteriormente.

Conclusión

En Java, la abstracción se puede lograr utilizando clases e interfaces abstractas, y ambos no pueden ser instanciados. Sin embargo, hay múltiples distinciones entre clases abstractas e interfaces. Por ejemplo, las interfaces deben tener todos los métodos abstractos, mientras que las clases abstractas pueden tener métodos abstractos y no abstractos; Usando interfaces, se puede lograr una herencia múltiple, mientras que las clases abstractas no admiten la herencia múltiple, etc. Esta publicación explicó varios aspectos de las clases e interfaces abstractas con la ayuda de ejemplos adecuados.