Em Java, super é uma palavra-chave que se refere à classe mãe (superclasse) de uma classe.
Ela é usada para acessar membros (métodos e atributos) da classe mãe quando uma classe filha (subclasse) herda dessa classe mãe.
A palavra-chave super é frequentemente usada em cenários onde há sobrescrita de métodos ou construtores, permitindo que você chame a implementação da classe mãe.
A palavra-chave super pode ser usada em diversos contextos:
Chamada de Construtores da Classe Mãe: Em um construtor de uma classe filha, super () é usado para chamar o construtor da classe mãe. Isso é útil quando você deseja executar parte da inicialização da classe mãe antes de fazer a inicialização específica da classe filha.
Acesso a Métodos ou Campos da Classe mãe: Em uma classe filha, você pode usar super para acessar métodos ou atributos da classe mãe, mesmo que esses métodos ou campos tenham sido sobrescritos na classe filha.
Neste exemplo, a classe Animal é a classe mãe e a classe Gato é uma subclasse que herda dela. A classe Gato sobrescreve o método fazerSom() da classe mãe. O método fazerSomDoAnimal() na classe Gato usa super.fazerSom() para chamar o método da classe mãe, mesmo que o método tenha sido sobrescrito.
A palavra-chave super é útil para acessar membros da classe mãe em uma classe filha, especialmente quando você quer estender ou modificar o comportamento da classe mãe em uma subclasse.
class Animal {
void fazerSom() {
System.out.println("Animal fazendo som");
}
}
public class ExemploSuper {
public static void main(String[] args) {
Gato gato = new Gato();
gato.fazerSom(); // Saída: Gato fazendo miau
gato.fazerSomDoAnimal(); // Saída: Animal fazendo som
}
}
class Gato extends Animal {
@Override
void fazerSom() {
System.out.println("Gato fazendo miau");
}
void fazerSomDoAnimal() {
super.fazerSom(); // Chamando o método da classe mãe
}
}