O que é essa palavra-chave em Java?

Java é uma linguagem orientada a objetos e pode haver muitos objetos presentes ao mesmo tempo, naqueles que poderíamos estar operando, a palavra-chave “this” aparece aqui porque ajuda a apontar a instância atual ou o objeto atual de uma classe.

Portanto, quando procuramos chamar métodos da classe atual, quando queremos chamar o construtor da classe atual, retornamos a instância atual de métodos, passamos a instância atual para métodos; em todos esses casos, essa palavra-chave é útil.

Casos de Uso de Exemplo

  1. O bloco sincronizado no multithreading usa essa palavra-chave como argumento
  2. Sobrecarga de construtor

Por que usar essa palavra-chave em Java?

  • A variável 'this' atua como uma variável final em java, ou seja, não podemos atribuir nenhum valor à variável 'this', isso pode ser verificado cruzando-se atribuindo um valor à palavra-chave 'this' e isso levará a um erro de compilação.
  • 'this' também pode ser usado para referenciar membros estáticos (mas isso não deve ser feito) porque os membros estáticos são declarados apenas uma vez, ou seja, a alocação de memória feita para eles é apenas uma vez e se tentarmos manipular usando a palavra-chave 'this', então sempre manipulará os dados colocados nesse local de memória em vez de criar dados em novos locais de memória, o que os objetos fazem.
  • Isso impede a tarefa de fazer atribuições desnecessárias a variáveis ​​e, às vezes, também não precisamos criar variáveis ​​extras; a palavra-chave 'this' sempre que usada nos dá a garantia de que a instância atual está sendo referida.

Importância desta palavra-chave

Os exemplos abaixo mostram que precisamos criar variáveis ​​com nomes diferentes para propriedades específicas; elas podem ser simplesmente atribuídas no construtor durante a inicialização do objeto usando esta palavra-chave.

  • Impede o conflito da variável membro e do nome da variável local; pode-se consultar a variável membro usando essa palavra-chave.

public class Student (
int marks;
String subjectName;
//constructor
public Student(int marks, String subjectName)
(
this.marks = marks;
this.subjectName=subjectName;
)
public Student()
(
)
public static void main(String args())
(
Student s = new Student(1, "name");
)
)

  • Métodos da classe de objeto também podem ser chamados usando isso.

//consider a method shown here
public String getName()
(
return this.toString();
)

  • Isso pode ser usado nos métodos setter e getter, para retornar as instâncias atuais.

Public int getmarks()
(
return this.marks;
)
public void setMarks(int marks)
(
this.marks =marks;
)

Usos específicos desta palavra-chave

Aqui estão alguns usos dessa palavra-chave explicados abaixo com a implementação:

1. Use dentro de um campo

public class PointCoordinates (
public int xval = 0;
public int yval = 0;
//constructor
public PointCoordinates (int a, int b) (
xval = a;
yval = b;
)
public static void main(String args())
(
)
)

Mas poderia ter sido escrito assim:

public class PointCoordinates (
public int xval = 0;
public int yval= 0;
//constructor
public PointCoordinates (int xval, int yval) (
this.xval = xval;
this.yval = yval;
)
public static void main(String args())
(
)
)

Portanto, isso também foi explicado na última seção, onde é possível observar que as convenções de nomenclatura para um tipo de campo de dados podem ser mantidas uniformes se estivermos usando a palavra-chave 'this'.

Portanto, um desenvolvedor não deve acompanhar ou mapear um gráfico de variáveis ​​para o mesmo tipo de campo de dados lógicos.

2. Invocação de construtor usando esta palavra-chave

Podemos usar essa palavra-chave dentro de um construtor e chamar outro construtor a partir daí, na mesma classe. Isso também é chamado de chamada explícita do construtor.

Vamos considerar um exemplo mostrado abaixo para o mesmo -

public class Square (
private int x;
private int side;
public Square () (
this(1);
)
public Square (int side) (
this(0, side);
)
public Square (int x, int side) (
this.x = x;
this.side = side;
)
public static void main(String args())
(
)
)

Existem três construtores aqui na figura, observe que o construtor padrão deve ser colocado explicitamente quando estamos sobrecarregando o construtor.

Esses construtores estão inicializando algumas variáveis ​​de membro; o compilador está recebendo uma indicação aqui sobre a chamada de construtor por meio do número de parâmetros usados ​​nos métodos.

3. Retornando a instância atual da classe usando esta palavra-chave

class Rectangle
(
int height;
int width;
Rectangle()
(
height = 10;
width = 20;
)
//Method to return current class instance
Rectangle getObject()
(
return this;
)
public void print()
(
System.out.println(height+", "+ width);
)
public static void main(String() args)
(
Rectangle object = new Rectangle();
object.getObject().print();
)
)

Portanto, no exemplo mostrado acima, pode-se ver que o objeto atual está sendo retornado de um método getter e, nessa instância, o método específico "print" foi chamado.

4. Use como parâmetro de método

class Rectangle
(
int height;
int width;
Rectangle()
(
height = 10;
width = 20;
)
void getObject()
(
print(this);
)
public void print(Rectangle object)
(
System.out.println(object.height + ", " + object.width);
)
public static void main(String() args)
(
Rectangle object = new Rectangle();
object.getObject();
)
)

O exemplo citou como o objeto atual está sendo passado para um método que pode usar esse objeto para seu uso personalizado.

Conclusão

Vimos vários casos de uso aqui, citando as variantes contra o uso dessa palavra-chave em java e onde e onde não usar, essas condições foram colocadas de maneira explícita.
A palavra-chave 'this' é comum entre todas as linguagens de programação, também nas estruturas baseadas em javascript, 'this' encontra um papel fundamental.
A palavra-chave 'this' pode se tornar uma sobrecarga se não for bem entendida e é uma grande ajuda para os desenvolvedores se entendida corretamente.

Artigos recomendados

Este é um guia para esta palavra-chave em java. Aqui discutimos a importância, usos específicos e exemplos dessa palavra-chave em java, juntamente com sua implementação de código. Você também pode consultar os seguintes artigos para saber mais:

  1. Objeto em Java
  2. Encapsulamento em JavaScript
  3. Palavra-chave estática em Java
  4. Sobrecarga e substituição em Java
  5. Função e Regras de Substituição em Python