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é.
Abraços e espero que tenha esclarecido suas dúvidas.