Palavra-chave super em Java

A palavra-chave super em Java é usada para se referir à superclasse imediata de uma classe. Ela é muito útil em situações onde uma classe herda de outra e você deseja acessar métodos, construtores ou variáveis da superclasse que foram sobrescritos na subclasse. A palavra-chave super permite que você acesse membros da superclasse de forma explícita.

Principais usos da palavra-chave super

  1. Chamar o construtor da superclasse
    Quando uma subclasse é instanciada, o construtor da superclasse também é chamado. Isso é feito implicitamente, mas você pode usar super() para invocar um construtor específico da superclasse.
  2. Acessar métodos da superclasse
    Se a subclasse sobrescrever um método da superclasse, você pode usar super para chamar o método da superclasse.
  3. Acessar variáveis da superclasse
    Caso uma variável de instância na subclasse tenha o mesmo nome de uma variável na superclasse, você pode usar super para acessar a variável da superclasse.

Exemplos de uso

1.Chamando o construtor da superclasse:

class Animal {
    Animal() {
        System.out.println("Animal criado");
    }
}

class Cachorro extends Animal {
    Cachorro() {
        super(); // Chama o construtor da superclasse (Animal)
        System.out.println("Cachorro criado");
    }
}

public class Teste {
    public static void main(String[] args) {
        Cachorro cachorro = new Cachorro();
    }
}

Saída:

Animal criado
Cachorro criado

2.Chamando o método da superclasse:

class Animal {
    void fazerSom() {
        System.out.println("Animal faz som");
    }
}

class Cachorro extends Animal {
    void fazerSom() {
        super.fazerSom(); // Chama o método da superclasse
        System.out.println("Cachorro late");
    }
}

public class Teste {
    public static void main(String[] args) {
        Cachorro cachorro = new Cachorro();
        cachorro.fazerSom();
    }
}

Saída:

Animal faz som
Cachorro late

3.Acessando variáveis da superclasse:

class Animal {
    String nome = "Animal";
}

class Cachorro extends Animal {
    String nome = "Cachorro";

    void exibirNome() {
        System.out.println(nome); // Acessa a variável da subclasse
        System.out.println(super.nome); // Acessa a variável da superclasse
    }
}

public class Teste {
    public static void main(String[] args) {
        Cachorro cachorro = new Cachorro();
        cachorro.exibirNome();
    }
}

Saída:

Cachorro
Animal

Resumo dos usos da palavra-chave super:

  • super(): Invoca o construtor da superclasse.
  • super.metodo(): Chama um método da superclasse.
  • super.variavel: Acessa uma variável de instância da superclasse.

O uso de super é especialmente importante quando lidamos com herança em Java, garantindo que a subclasse possa se beneficiar das funcionalidades da superclasse, mesmo quando estas foram sobrescritas.