Olá pessoal!
Ainda sinto um pouco de dificuldades para identificar a qual elemento o "this." se refere.
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 todo
pode 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!!