[resolvido]Qual a vantagem em inicializar variaveis com construtor?

3 respostas
marciojesus

Estou tentando entender porque quando atribuo valores as variaveis de instancia que inicializei pelo construtor, quando chamo os metodos get e set eles
nao retornam os valores atribuidos nos metodos, ou quando passo os valores na passagem de parametros.

3 Respostas

S

marciojesus:
Estou tentando entender porque quando atribuo valores as variaveis de instancia que inicializei pelo construtor, quando chamo os metodos get e set eles
nao retornam os valores atribuidos nos metodos, ou quando passo os valores na passagem de parametros.

Coloca o seu construtor para que possamos ver o que está ocorrendo.

E

marciojesus:
Estou tentando entender porque quando atribuo valores as variaveis de instancia que inicializei pelo construtor, quando chamo os metodos get e set eles
nao retornam os valores atribuidos nos metodos, ou quando passo os valores na passagem de parametros.

Provavelmente porque você deve estar esquecendo de escrever “this”:

// Versão incorreta
public class Complex {
    private double r;
    private double i;
    public Complex (double r, double i) {
        r = r; 
        i = i; 
    }
}
// Versão correta
public class Complex {
    private double r;
    private double i;
    public Complex (double r, double i) {
        this.r = r; 
        this.i = i; 
    }
}
ECO2004

O que está acontecendo é muito simples: você utiliza um nome de variável local com o mesmo nome da variável de instância. Nesse caso, ocorre o sombreamento da variável de instância. Para resolver isso, utilize o this.

this.r = r; this.i = i;

Criado 4 de março de 2013
Ultima resposta 4 de mar. de 2013
Respostas 3
Participantes 4