Palavra reservada super e this

Para que serve a palavra reservada super e this?
vlw

A palavra super é usada pra referenciar uma classe pai da classe em questão. Você pode usar pra chamar o construtor da superclasse e também chamar seus métodos usando super. Ex; super.metodo().

A palavra this serve para referenciar o próprio objeto.

Vamos por parte. Primeiro você deve saber que existem as palavras reservadas this e super, e as instruções this() e super(). E elas são muito diferentes.
A palavra reservada super é utilizada para fazer referencia a métodos ou atributos da super classe. Imagina que você tenha uma classe chamada de Gerente que herda da classe Funcionário e qua ambas as classes possuem um método chamado calcularGratificacao(). Estando na classe Gerente como fazer para chamar o método calculaGratificacao() da superclasse (Funcionario)?

super.calcularGratificacao(); // aí o compilador sabe que você quer utilizar o método da superclasse e não o método local.

Já palavra reservada this é utilizada normalmente dentro métodos que recebem paramentros com o mesmo nome de atributos de instância da classe ou para fazer referência ao próprio objeto, vamos à um exemplo:

public void setNome(String nome){ this.nome = nome; // o this nesse caso informar que o atributo de instancia "nome" vai receber o valor do paramentro "nome". Se não tivesse o this, como ele saberia? ficaria ambiguo. }

Outro exemplo, imagine que você esteja na classe Gerente e chama o método de outra classe que espera como argumento um objeto da classe Gerente. Daí você pode utilizar o this para fazer isso.

Armazenamento.salvarGerente(this); // o método salvar gerente espera como argumento um objeto da classe Gerente, como estou dentro da classe gerente eu disse que o objeto a ser salvo é “este”(this).

As instruções This() e super() são utilizados para referenciar construtores e devem sempre ser chamados na primeira linha de outro construtor. O primeiros, this(), referencia um construtor dentro da mesma classe:

[code]
public Pessoa(){
this (“Wagner Borges”);
}

public Pessoa(String nome){
this.nome = nome;
}[/code]

Observe que eu tenho dois contrutores e que primeiro faz referencia ao segundo.

Agora, o super() nós utilizamos para fazer referencia a construtores da superclasse:

public Gerente(){ super("Wagner Borges"); // estou referenciando um construtor da super classe que espera como argumento uma string. }

Simples né. :slight_smile:

Abraços e espero que tenha esclarecido suas dúvidas.

5 curtidas