Publicado em

abstract em Java

Partilhar:

Introdução

O abstract é um modificador em Java que é usado principalmente em contextos de programação orientada a objetos. Ele desempenha um papel crucial no desenvolvimento de sistemas modulares e flexíveis.

O que é o abstract?

No Java, o abstract é utilizado para indicar que:

  1. Uma classe não pode ser instanciada diretamente.
  2. Um método não tem corpo e deve ser implementado em uma subclasse.

Porque usar Classes e Métodos abstract?

  1. Para Enfatizar o Design: Classes abstract são, muitas vezes, usadas para definir um modelo ou design para outras classes.
  2. Polimorfismo: Facilita o polimorfismo, uma vez que classes derivadas podem ter diferentes implementações dos métodos abstract.
  3. Evitar Criação Acidental de Objetos: Como classes abstract não podem ser instanciadas, elas evitam a criação acidental de objetos.

Diferença entre abstract e Interface

  • Métodos e Variáveis: Enquanto uma interface só pode conter assinaturas de métodos, uma classe abstract pode conter tanto métodos completos quanto abstract.
  • Variáveis de Estado: Classes abstract podem conter variáveis de estado, enquanto interfaces não.
  • Herança Múltipla: Java não suporta herança múltipla de classes, mas permite que uma classe implemente múltiplas interfaces.

Exemplificando com Código

As classes e métodos abstract são usados quando uma base comum é necessária, mas não queremos que essa base seja instanciada:

package com.caffeinealgorithm.programaremjava;

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

public class Abstract {
  public void Run() {
    // ClasseX.informacaoX();
    var classe = new ClasseY();
    classe.informacaoY();

    /*
      País: Portugal
      País: Brasil
      País: Espanha
      País: França
      País: Itália
      País: Austrália
      País: Índia
    */
  }
}

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

  public static void informacaoX() {
    for (char carater : comunidade.toCharArray())
      System.out.printf("Carater: %c\n", carater);
  }

  public abstract void informacaoY();
}

class ClasseY extends ClasseX {
  public void informacaoY() {
    paises.add("Portugal");
    paises.add("Brasil");
    paises.add("Espanha");
    paises.add("França");
    paises.add("Itália");
    paises.add("Austrália");
    paises.add("Índia");

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

Neste exemplo, ClasseX é abstract, o que significa que não pode ser instanciada, mas ClasseY (uma classe derivada) pode.

Conclusão

O modificador abstract é uma ferramenta valiosa no arsenal de um desenvolvedor Java. Ele promove práticas sólidas de design, ajudando os desenvolvedores a criar sistemas mais robustos e manuteníveis.

Happy coding!