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

Dúvida no Ex. 3 da Aula 1 - Defina o escopo de variáveis

O que seria exatamente um shadowing?

5 respostas
solução!

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?