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

dúvida básica de java com atributos, objetos e métodos!

boa tarde pessoa, me ajudem a tirar essa dúvida que segue:

 Porta p1 = new Porta();
         p1.cor = "Azul";
         p1.pinta(""); // se passo direto o atributo cor o java reclama,
//tenho que passar uma string pra rodar!!!
// porem se eu passo uma string ex; p1.pinta("Vermelha")
// o java só entende o valor que está em p1.cor!
// me ajudem a entender essa lógica que o java faz! abraço vlw!
 void pinta(String cor) {
        System.out.println("sua cor e:"+this.cor);
    }

resultado!!!

sua cor e:Azul
3 respostas

Oi André, tudo bom?

Isso acontece porque a cor que estamos imprimindo é diferente da cor que estamos recebendo como parametro no método pinta:

 void pinta(String cor) {
// recebemos a string cor
        System.out.println("sua cor e:"+this.cor);
// imprimimos a cor definida na classe, ou seja, usamos this.cor
    }

Acredito que a ideia do pinta seja atualizar a cor da porta, certo?

Só falta a gente dizer que a cor da porta, depois de chamar o método pinta, é igual a cor passada como parametro. Algo como:

void pinta(String cor) {
// recebemos a string cor
this.cor = cor;
// dizemos que a cor da porta agora é igual a cor recebida 
        System.out.println("sua cor e:"+this.cor);
// imprimimos a nova cor =)
    }

Qualquer problema é só falar.

Abraço!

massa bixo da hora! vamos lá deixe me ver se entendi!

    void pinta(String cor) // aqui estou recebendo o valor
// passado no parâmetro do método ?
               System.out.println("sua cor e:"+cor);//sem this
    }
    void pinta(String cor) // aqui estou recebendo o valor
// passado no atributo da classe?
               System.out.println("sua cor e:"+this.cor);//com this
solução!
void pinta(String cor) // aqui estou recebendo o valor
// passado no parâmetro do método ?
               System.out.println("sua cor e:"+cor);//sem this
    }

Perfeito!

Aqui:

 void pinta(String cor) // a gente ta recebendo esse valor
               System.out.println("sua cor e:"+this.cor);// e usando outro

A ideia é que a cor, passada como parametro pro método pinta, é diferente do atributo cor acessado pelo this.cor.

Quando a gente faz:

Porta p = new Porta();
p.cor = "azul";

A gente ta atualizando o valor do atributo cor. Ou seja, quando a gente acessar dentro da classe Porta:

this.cor

Estamos pegando esse valor.

Agora, quando chamamos o método:

Porta p = new Porta();
p.cor = "azul";
p.pinta("vermelho");
---------------
class Porta{
    String cor;
// resto da classe
    void pinta(String cor){
        System.out.println("A cor passada para o pinta é: ".cor); // imprime vermelho    
        System.out.println("A cor da porta é ".$this.cor); // imprime azul
    }
}