Vídeo: Curso de Java 41: Orientação a Objetos: Herança: classes abstratas 2024
Uma classe abstrata em Java é uma classe que contém um ou mais métodos abstratos , que são simplesmente declarações de método sem um corpo - ou seja, sem o código executável que implementa a classe ou o método. Um método abstrato é como um protótipo para um método, declarando o tipo de retorno e a lista de parâmetros do método, mas não fornece uma implementação real do método.
Você não pode instanciar uma classe abstrata. No entanto, você pode criar uma subclasse que estenda uma classe abstrata e fornece uma implementação dos métodos abstratos definidos pela classe abstrata. Você pode instanciar a subclasse.
Para criar um método abstrato, você especifica o modificador de resumo e substitui o corpo do método por um ponto-e-vírgula:
método público de retorno-tipo-nome (lista de parâmetros);
Aqui está um exemplo:
public abstract int hit (int batSpeed);
Para criar uma classe abstrata, você usa o resumo na declaração da classe e inclui pelo menos um método abstrato. Por exemplo:
classe pública abstrata Ball {public abstract int hit (int batSpeed);}
Você pode criar uma subclasse de uma classe abstrata como esta:
classe pública BaseBall estende Ball {public int hit (int batSpeed) {// código que implementa o método de sucesso vai aqui}}
Quando você subclasse uma classe abstrata, a subclasse deve fornecer uma implementação para cada método abstrato na classe abstrata. Em outras palavras, ele deve substituir cada método abstrato.
As classes abstratas são úteis quando você deseja criar um tipo genérico que é usado como a superclasse para duas ou mais subclasses, mas a própria superclasse não representa um objeto real. Se todos os funcionários são assalariados ou por hora, por exemplo, faz sentido criar uma classe de Funcionário abstrata e depois usá-la como a classe base para as subclasses SalariedEmployee e HourlyEmployee.
Aqui estão alguns detalhes adicionais sobre classes abstratas:
-
Nem todos os métodos em uma classe abstrata devem ser abstratos. Uma classe pode fornecer uma implementação para alguns de seus métodos, mas não para outros. Na verdade, mesmo que uma classe não tenha métodos abstratos, você ainda pode declarar como resumo. (Nesse caso, porém, a classe não pode ser instanciada.)
-
Um método privado não pode ser abstrato. Todos os métodos abstratos devem ser públicos.
-
Uma classe não pode ser abstrata e final.