Olá pessoal!
Ainda sinto um pouco de dificuldades para identificar a qual elemento o "this." se refere.
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Olá pessoal!
Ainda sinto um pouco de dificuldades para identificar a qual elemento o "this." se refere.
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 todopode me falar um pouco mais sobre ela?
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!!