Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

[Dúvida] Uso do super

Devo sempre usar a palavra chave super para indicar que o atributo ou método é da classe mãe? Pois escrevi a classe filha sem o super e o código compilou com o mesmo resultado de quando uso o super.

3 respostas
solução!

Olá Thiane, tudo bem com você?

Isso, sempre é indicado utilizar o super, para garantir o uso do método ou atributo da classe mãe. Caso contrário pode ocorrer uma situação de recursão infinita sem intenção. Por exemplo:

//Codigo da classe mãe
public class Mae{

    public void teste(){
        System.out.println("Metodo da classe mae");
    }

}
//Classe Filha
public class Filha extends Mae{

    public void teste(){
        teste();
        System.out.println("Metodo da classe Filha");
    }

}

Vai resultar em um erro StackOverflowError, que indica que a pilha de execução foi excedida. No entanto, ao modificar a classe Filha para:

//Classe Filha corrigida
public class Filha extends Mae{

    public void teste(){
        super.teste();
        System.out.println("Metodo da classe Filha");
    }

}

Teremos como saída do método teste() da classe Filha:

Metodo da classe mae
Metodo da classe Filha

Portanto, o uso da palavra chave super é de suma importância para indicar ao compilador que ele deve utilizar o método existente na classe estendida, e não na classe que estende. Podem haver casos onde não será estritamente necessário o uso da palavra chave super, mas ainda assim nesses casos é indicado a utilização da mesma, para garantir que seu uso funcione como esperado e também para facilitar a leitura do código - ao bater o olho já fica claro que se trata de um método da classe mãe.

Para se aprofundar mais, recomendo a documentação da palavra-chave super da w3schools, que está em inglês mas caso seja necessário você pode utilizar a ferramenta de tradução do seu navegador para facilitar o entendimento!

Fico à disposição e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

Oi Arthur! Tudo bem e contigo? Agora consegui entender. Muito obrigada pela explicação :)

É super fácil a didática do super, só usa quanto for acessar algum atributo de uma classe maior(CLASSE MÃE)