O que seria exatamente um shadowing?
O que seria exatamente um shadowing?
Boa tarde Ian,
Um simples exemplo de shadowing é quando um metodo possui um parametro com o mesmo nome de um atributo da classe
public class Pessoa {
private String nome;
public void setNome(String nome) {
nome = nome;
}
}
Repare que a referencia this não foi utilizada para que o setter fizesse a atribuição ao atributo nome da classe, então quando o metodo setter receber um valor, ele estará atribuindo o valor para si mesmo, isso é o shadowing.
Fez sentido?
Bom dia Douglas,
O shadowing (sombreamento) é a prática de utilizar o mesmo nome do atributo da classe no parametro do método. Porém ao fazer isso, vocẽ não consegue distinguir quem está recebendo o que, se o parametro do metro está recebendo o valor do atributo ou se o valor do atributo está recebendo o valor do parametro, logo é necessário utilizar a palavra reservada this, para referenciar que o atributo vai receber o valor do parâmetro passado no método.
Bom dia Renato,
Na verdade é possivel distinguir, ao realizar o shadowing sem referenciar com o this.
Bom dia Douglas,
Poderia me esclarecer como faço isso, pois no livro certificação SCJP 6.0 (Kathy Sierra), eles deram essa explicação referente a this.
Renato,
É possivel que em uma situação como o exemplo acima, de alguma forma a atribuição acabe sendo para o atributo da classe?