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

Duvida "this."

Olá pessoal!

Ainda sinto um pouco de dificuldades para identificar a qual elemento o "this." se refere.

6 respostas

Oi Tatiana

A palavra reservada "this" é uma variável que referencia o objeto atual. O objetivo principal de usar o "this" é remover a confusão entre os atributos de classe e os parâmetros que têm os mesmos nomes. Por exemplo:

public class Point {
    public int x = 0;
    public int y = 0;

    //constructor
    public Point(int x, int y) {
        this.x = x; // o this.x é o atributo x da classe, o x sem o this é o argumento do construtor
        this.y = y;
    }
}

Outro exemplo:

public class MyThisTest {
  private int a;

  public MyThisTest() {
    this(42); // chama o construtor abaixo
  }

  public MyThisTest(int a) {
    this.a = a; // coloca o valor do parâmetro "a" no atributo de classe "a" com o mesmo nome
  }

  public void frobnicate() {
    int a = 1;

    System.out.println(a); // referencia a variavel local "a" (int a = 1)
    System.out.println(this.a); // referencia o atributo "a" (private int a)
    System.out.println(this); // referencia o objeto corrente todo
  }

  public String toString() {
    return "MyThisTest a=" + a; // referencia ao atributo "a"
  }
}

Muito obrigada!!! me ajudou muito!!! Muito esclarecedor!!!!

Não tinha visto ainda essa alternativa:

 System.out.println(this); // referencia o objeto corrente todo

pode me falar um pouco mais sobre ela?

solução!

Claro!

Por exemplo, quando estamos dentro de uma classe qualquer e usamos o "this" é como se estivessemos usando a referência gerada pelo comando "new":

class Pessoa {
    private int idade = 18;

    public void metodoDaClasse() {
        System.out.println(this); // referencia o objeto Pessoa (como estou dentro de pessoa, a forma de usar a referência ao objeto corrente "pessoa" é através do "this"
    }

    public String toString() {
        return "[Pessoa] idade=" + this.idade; // referencia ao atributo "idade" do objeto corrente "pessoa"
    }


}

public class Main {
    public static void main(String[] args) {
        Pessoa pessoa = new Pessoa();
        pessoa.metodoDaClasse();

        System.out.println(pessoa); // como não estou dentro do objeto "pessoa" o jeito de referenciar esse objeto é através da referencia gerada através do "new Pessoa();"
    }
}

Nesse exemplo, System.out.println(this); e System.out.println(pessoa); vão ter o mesmo efeito: ambos vão chamar o método toString()

Muitíssimo obrigada!!!! me ajudou muito!!!!!!

Fico feliz que tenha ajudado, se tiver outra dúvida e eu puder ajudar só falar :)

Obrigada!!! pode deixar!!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software