Clase abstracta en Java y métodos [con ejemplos]

Publicado: 2021-06-18

El siguiente artículo discutirá las propiedades de la abstracción en Java y cómo podría lograrse a través de clases abstractas y métodos abstractos. Exploraremos las características de las clases abstractas y las interfaces en Java.

Tabla de contenido

Abstracción

Uno de los conceptos importantes de Java es la abstracción. Es la propiedad por la cual el usuario se muestra con sólo los detalles importantes de un programa. Todas las partes no esenciales se mantienen ocultas. El proceso se puede explicar a través del ejemplo de un correo electrónico. Los remitentes envían un correo electrónico que se entrega al receptor. La única información conocida por el remitente es que el correo electrónico ha sido enviado. El proceso en segundo plano de envío del correo electrónico está oculto para los usuarios. Similar es el proceso en la Programación Orientada a Objetos (OOP) donde los elementos esenciales se muestran al usuario mientras que las partes no esenciales están ocultas. El usuario no tiene información sobre el proceso de implementación, solo se conoce la funcionalidad. Este mecanismo se conoce como la abstracción donde solo se muestran las características esenciales de un objeto mientras se ignoran las demás características.

En Java, la abstracción se logra a través de clases e interfaces abstractas.

Clase abstracta en Java

La palabra clave "abstract" se usa para clases y métodos abstractos en Java. La clase abstracta tiene la palabra clave abstracta en su declaración.

La sintaxis de una clase abstracta de Java es:

clase abstracta class_name

{

public abstract void the_abstractMethod();

vacío público the_normalMethod()

{

#cuerpo del método

}

}

La sintaxis anterior muestra que tanto los métodos normales como los abstractos pueden estar contenidos en una clase abstracta.

Algunas propiedades de las clases abstractas son:

  • Los métodos abstractos pueden o no estar presentes en la clase abstracta de Java .
  • La presencia de al menos un método abstracto en una clase hace que la clase sea una clase abstracta.
  • Una clase abstracta no puede tener ningún objeto y, por lo tanto, no se puede instanciar directamente.
  • Una clase abstracta solo se puede usar si se hereda de otra clase e implementa los métodos abstractos.
  • Se requieren implementaciones adecuadas de los métodos abstractos al heredar una clase abstracta.
  • Tanto los métodos regulares como los abstractos pueden estar presentes en una clase abstracta de Java .
  • Los constructores parametrizados pueden estar presentes en una clase abstracta. Además, una clase abstracta siempre contiene un constructor predeterminado.

Métodos abstractos

Los métodos abstractos son aquellos tipos de métodos que no requieren implementación para su declaración. Estos métodos no tienen un cuerpo, lo que significa que no tienen implementación. Algunas propiedades de un método abstracto son:

  • Un método abstracto en Java se declara a través de la palabra clave "resumen".
  • Mientras que la declaración del método abstracto, la palabra clave abstracta debe colocarse antes del nombre del método.
  • No hay cuerpo en un método abstracto, solo está presente la firma del método.
  • Un método abstracto en Java no tiene llaves, pero el final del método tendrá un punto y coma (;)

Método doble abstracto (doble n1, doble n2);

  • Cualquier clase que contenga un método abstracto debe declararse como una clase abstracta. Aunque lo contrario podría no ser cierto, es decir, no es necesario que una clase abstracta tenga un método abstracto.
  • La herencia de una clase abstracta por parte de una clase regular requiere la implementación de todos los métodos abstractos en la clase principal.

Ejemplo de un método abstracto

coche de clase abstracta pública

{

modelo de cadena privado;

color de cadena privado;

año int privado;

precio de cálculo doble abstracto público ();

}

Si las clases derivadas no implementan los métodos abstractos, daría como resultado clases abstractas que no se pueden instanciar.

Algunos no se pueden usar con la palabra clave abstracta en Java.

  • final
  • nativo abstracto
  • estática abstracta
  • abstracto privado
  • abstracto sincronizado
  • Resumen estricto

A continuación se muestra un código que muestra el uso de un método abstracto en Java .

Fuente

La salida del código es:

Interfaces Java

Además de las clases abstractas y los métodos abstractos, Java usa interfaces para lograr la abstracción. Cuando los métodos relacionados se agrupan en cuerpos vacíos, se denomina interfaz. La interfaz es similar a una clase abstracta, ya que es la agrupación de métodos abstractos. Cuando una clase implementa la interfaz, se heredan todos los métodos abstractos dentro de la interfaz. La interfaz también puede contener métodos predeterminados, constantes y métodos estáticos. Los cuerpos de los métodos solo están presentes en los métodos predeterminado y estático. Una herencia y una clase se pueden escribir de manera similar, pero una clase puede describir los atributos y el comportamiento de un objeto. Mientras que en el caso de una interfaz solo están presentes los comportamientos de un objeto, la clase los implementa.

Una clase tiene que definir todos los métodos de la interfaz que implementa. Solo para una clase abstracta, no es necesario que la clase defina los métodos.

Una interfaz es similar a una clase abstracta de Java de las siguientes maneras:

  • Cualquier número de métodos puede estar contenido en una interfaz.
  • La extensión .java se usa para escribir una interfaz en un archivo. El nombre del archivo debe coincidir con el nombre de la interfaz.
  • El archivo .class contiene el código de bytes de una interfaz.
  • Las interfaces aparecen en los paquetes. El archivo de código de bytes de una interfaz está presente en un directorio con el mismo nombre que el nombre del paquete.

Una interfaz se diferencia de una clase abstracta de Java en los siguientes aspectos:

  • La interfaz no puede ser instanciada.
  • No hay constructores en una interfaz.
  • La interfaz contiene solo métodos abstractos.
  • No hay campos de instancia presentes en una interfaz. Un campo debe declararse como estático y final si tiene que aparecer en una interfaz.
  • Solo una clase puede implementar una interfaz, pero no puede extenderse.
  • Una interfaz puede extender múltiples interfaces.

Aprenda cursos de software en línea de las mejores universidades del mundo. Obtenga programas Executive PG, programas de certificados avanzados o programas de maestría para acelerar su carrera.

Propiedades de una interfaz

  • No es necesario declarar una interfaz como abstracta a través de la palabra clave abstracta , ya que es implícitamente abstracta.
  • No se requieren palabras clave abstractas para declarar los métodos como abstractos, ya que son implícitamente abstractos.
  • Todos los métodos en una interfaz son implícitamente públicos.

¿Cómo declarar una interfaz?

La palabra clave "interfaz" se utiliza para declarar una interfaz. La abstracción total se proporciona mediante el uso de una interfaz. Por defecto, todos los métodos dentro de una interfaz son abstractos y públicos. Esto significa que no hay ninguno de los métodos en una interfaz y todos los campos son estáticos, públicos y finales.

Sintaxis de una interfaz:

Interfaz nombre_de_la_interfaz {

# declarar campos

# declarar métodos abstractos

}

Por ejemplo, interfaz Player

{

edad int final = 40;

int calc();

}

¿Cómo implementar una interfaz?

Para implementar una interfaz se utiliza la palabra clave ' implementa' . Una clase puede implementar más de una interfaz. En tales casos, la palabra clave ' implementa' va seguida de una lista de interfaces separadas por una coma. La palabra clave se utiliza en la declaración de clase.

A continuación se muestra un ejemplo de implementación de la interfaz:

clase Maruti implementa Coche

A continuación se muestra un ejemplo de un código que muestra la implementación de una interfaz en Java.

Fuente

El código genera el siguiente resultado:

A continuación se muestra un código que aplica la implementación de múltiples interfaces.

Fuente

El código genera el siguiente resultado:

Algún texto…

Algún otro texto…

¿Por qué se utiliza la interfaz?

  • Las interfaces se utilizan para lograr una abstracción total.
  • Las herencias múltiples en Java se pueden lograr mediante el uso de la herencia, ya que Java no admite herencias múltiples.
  • El acoplamiento suelto se puede lograr mediante el uso de una interfaz.
  • Mediante el uso de la abstracción de implementación en Java se puede lograr.

Aunque la abstracción en Java se puede lograr a través de la clase abstracta de Java, las interfaces se utilizan porque contienen variables finales, públicas y estáticas. Sin embargo, las variables no finales pueden estar presentes en una clase abstracta.

Si se utilizan tanto la interfaz de Java como la clase abstracta de Java para lograr la abstracción, ¿cuándo se deben utilizar una interfaz y una clase abstracta?

  • Una clase abstracta se usa cuando el usuario necesita definir una plantilla para un grupo de subclases.
  • Una interfaz se usa cuando un usuario necesita definir un rol para otras clases.

Algunas ventajas de la abstracción son:

  • Se reduce la complejidad del programa.
  • Hay menos posibilidades de duplicación de código aumentando la reutilización.
  • La seguridad de un programa aumenta mediante el uso de la abstracción, ya que solo se proporcionan algunos detalles al usuario.

Conclusión

El artículo discutió el concepto detallado de abstracción en Java, que es una técnica para ocultar información no esencial al usuario. En Java, la abstracción se logra a través de clases e interfaces abstractas. Las interfaces proporcionan una abstracción del 100%, mientras que las clases abstractas proporcionan una abstracción parcial. El artículo mencionó además cuándo usar una interfaz y cuándo se debe usar una clase abstracta. También enumeró las similitudes de una interfaz con la de la clase abstracta de Java y también las diferencias. Sin el conocimiento necesario de ambos conceptos, se obtendrá un código lleno de fallas.

Si está más interesado en aprender más e implementar los conceptos en problemas de la vida real, puede consultar el curso de Maestría en Ciencias de la Computación proporcionado por upGrad y IIIT -Bangalore reconocido por la Universidad John Moores de Liverpool . El curso está diseñado para profesionales de nivel inicial (21-45 años de edad) que brindan más de 500 horas de capacitación de expertos líderes de la industria y facultades de ingeniería de software. Se pueden consultar más detalles del curso en la página web oficial de upGrad.

Mejore sus habilidades y prepárese para el futuro

Solicite el programa Executive PG en desarrollo de software de IIIT-B