Saltar al contenido principal
Publicado el

abstract en Java

Compartir:

Introducción

abstract es un modificador en Java que se utiliza principalmente en contextos de programación orientada a objetos. Desempeña un papel crucial en el desarrollo de sistemas modulares y flexibles.

¿Qué es abstract?

En Java, abstract se utiliza para indicar que:

  1. Una clase no puede ser instanciada directamente.
  2. Un método no tiene cuerpo y debe ser implementado en una subclase.

¿Por qué usar Clases y Métodos abstract?

  1. Para Enfatizar el Diseño: Las clases abstractas se usan frecuentemente para definir una plantilla o diseño para otras clases.
  2. Polimorfismo: Facilita el polimorfismo, ya que las clases derivadas pueden tener diferentes implementaciones de los métodos abstractos.
  3. Evitar la Creación Accidental de Objetos: Como las clases abstractas no pueden ser instanciadas, evitan la creación accidental de objetos.

Diferencia entre abstract e Interface

  • Métodos y Variables: Mientras que una interfaz solo puede contener firmas de métodos, una clase abstracta puede contener tanto métodos completos como abstractos.
  • Variables de Estado: Las clases abstractas pueden contener variables de estado, mientras que las interfaces no.
  • Herencia Múltiple: Java no soporta herencia múltiple de clases, pero permite que una clase implemente múltiples interfaces.

Ilustrando con Código

Las clases y métodos abstractos se utilizan cuando se necesita una base común, pero no queremos que esa base sea instanciada:

package com.caffeinealgorithm.programaremjava;

import java.util.ArrayList;
import java.util.List;

public class Abstract {
  public void Run() {
    // ClaseX.informacionX();
    var instancia = new ClaseY();
    instancia.informacionY();

    /*
      País: Portugal
      País: Brasil
      País: España
      País: Francia
      País: Italia
      País: Australia
      País: India
    */
  }
}

abstract class ClaseX {
  public static String comunidad = "Caffeine Algorithm";
  public static List<String> paises = new ArrayList<>();

  public static void informacionX() {
    for (char caracter : comunidad.toCharArray())
      System.out.printf("Carácter: %c\n", caracter);
  }

  public abstract void informacionY();
}

class ClaseY extends ClaseX {
  public void informacionY() {
    paises.add("Portugal");
    paises.add("Brasil");
    paises.add("España");
    paises.add("Francia");
    paises.add("Italia");
    paises.add("Australia");
    paises.add("India");

    for (String pais : paises)
      System.out.printf("País: %s\n", pais);
  }
}

En este ejemplo, ClaseX es abstracta, lo que significa que no puede ser instanciada, pero ClaseY (una clase derivada) sí puede.

Conclusión

El modificador abstract es una herramienta valiosa en el arsenal de un desarrollador Java. Promueve buenas prácticas de diseño, ayudando a los desarrolladores a crear sistemas más robustos y mantenibles.

Happy coding!