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

Dúvida "this."

Boa tarde pessoal! Toda vez que vou usar o "this" eu fico um pouco inseguro. Sabem me dizer se a implementação do método calculaArea abaixo esta correto? Esta diferente da do professor e qual a diferença de eu utilizar o this ou não nesse caso.

public class Circulo implements AreaCalculavel{
    private double raio;

    public Circulo(double raio){
        this.raio = raio;
    }

    public double calculaArea(){
        return Math.PI*this.raio*this.raio;
    }
}
4 respostas

Oi Kelvym, tudo bem ?

No calculaArea você quer utilizar o raio que você tem na classe Circulo ?

Se sim, o uso do this está correto.

Boa Tarde Matheus!

Na verdade não sei qual o ideal usar.

No caso abaixo utilizarei o valor do raio que foi guardado na classe. Correto?

  public double calculaArea(){
        return Math.PI*this.raio*this.raio;

Se eu utilizar o cód. abaixo vou usar o que especificamente?

  public double calculaArea(){
        return Math.PI*raio*raio;

Boa Noite Kelvym! Como o Matheus falou o uso do this é aplicado ao que está no atributo da classe Circulo. Veja a classe abaixo um exemplo para que veja mais claramente o uso.

public class CalculadoraArea {

    private double lado;

    public CalculadoraArea(double lado) {
        super();
        this.lado = lado;
    }

    public double calculaAreaQuadradoOuRetangulo(double lado){
        if(lado==this.lado){
            return Math.pow(this.lado, 2);
        }
        return lado*this.lado;
    }
}

Com base na classe Circulo postada criei a classe CalculadoraArea e o método dela tem a capacidade de calcular a área de um quadrado ou retângulo, com base no parâmetro que passar para o método.

solução!

Bom dia Kelvym,

Seu código está certo. Nesse caso funcionaria com e sem o this. O this é uma maneira que você tem de referenciar a instância do objeto que você está. Um uso dele é quando recebemos um parâmetro com o mesmo nome de um atributo da classe. Quando você recebe no seu método um parâmetro ele será uma variável local(só vai existir naquele método). Então quando você for usar os valores, como você sabe se está usando o atributo da classe ou o que você recebeu no método? Usando this. Então quando você usa this.raio você está dizendo..." Eu quero o raio da minha classe ."

Quando não ocorrer esse caso de ter uma variável local e o atributo da sua classe com o mesmo nome fica seu critério colocar this ou não. Tem gente que prefere sempre usarpara ficar visível que está manipulando uma propriedade da classe.

Abraço