JavaRush /Blogue Java /Random-PT /Palavra-chave isto {em exemplos}

Palavra-chave isto {em exemplos}

Publicado no grupo Random-PT
No JavaRush, os alunos são apresentados à palavra-chave literalmente desde as primeiras palestras this. E com o tempo fica claro o que isso significa. Mas muitos, olhando para trás, provavelmente dirão honestamente a si mesmos que por muito tempo não conseguiram perceber o zen dessa palavra-chave. Neste artigo levantamos o véu dos segredos sobre o uso de palavras-chave thispara quem ainda não conseguiu descobrir... Bem-vindo! Se você pegar o livro de referência Java de Schildt , na página 171 você lerá que uma palavra-chave thisé necessária para que um método possa referenciar o objeto que o chamou. Na verdade, isso pode ser o fim de tudo. Mas precisamos de detalhes. Palavra-chave isto {em exemplos} - 1Via de regra, thisdeve ser utilizado em dois casos:
  1. Quando uma variável de instância de classe e uma variável de método/construtor têm o mesmo nome;
  2. Quando você precisa chamar um construtor de um tipo (por exemplo, um construtor padrão ou parametrizado) de outro. Isso também é chamado de chamada explícita do construtor.
É isso, não muito, apenas dois casos em que essa temida palavra-chave é usada. Agora vamos examinar essas duas situações com exemplos.

Exemplo um - variável de instância e variável de método têm o mesmo nome

Digamos que temos uma classe Humanpara a qual o campo "nome" está definido: Palavra-chave isto {em exemplos} - 2Vamos namecriar um setter para a variável (o setter funciona bastante e não há nenhum truque aqui): Observe que estamos passando a variável Palavra-chave isto {em exemplos} - 3para o método (setter ) . Introduzimos uma nova variável e (em geral) poderíamos chamá-la do que quiséssemos porque ela só seria visível entre as {chaves} do método . Observe que há uma linha no setter: setNameString newNamesetName
name = newName;
Ou seja, de fato, introduzimos uma nova variável newNamee a atribuímos a uma variável já existente na classe name. Muitos programadores acharam estranho introduzir uma variável com um novo nome se no final estamos falando da mesma coisa. Sobre o nome na classe Human. Portanto, os desenvolvedores da linguagem pensaram em tornar conveniente o uso de um nome de variável. Em outras palavras, por que ter dois nomes para uma variável que significa a mesma coisa? Ou seja, eu gostaria de fazer algo assim: Palavra-chave isto {em exemplos} - 4Mas neste caso surge um problema . Agora temos duas variáveis ​​com o mesmo nome. Um String namepertence à classe Humane o outro String nameao seu método setName. Portanto, a máquina Java não sabe a qual variável você se refere quando escreve uma string em um setter:
name = name;
Java pega o mais próximo - namedo método setName:
Palavra-chave isto {em exemplos} - 5
e acontece que você simplesmente atribui um valor a uma variável namedesse método, para ela. O que, claro, não faz sentido. Portanto, era necessária alguma forma de distinguir uma variável namede uma classe Human, de uma variável namede um método setName. Para resolver este problema, foi introduzida a palavra-chave this, que neste caso indicará que é necessário chamar uma variável não de um método, mas de uma aula Human:
Palavra-chave isto {em exemplos} - 6
Ou seja, thisirá se referir ao objeto chamador, como foi dito no início do artigo. Como resultado, o nome da pessoa setNameserá definido através do setter para o objeto criado. Abaixo está o código sem usar a palavra-chave this. O código cria um objeto de classe Humane dá um nome a ele:
Palavra-chave isto {em exemplos} - 7
E abaixo está o código do programa com a palavra-chave this:
public class Solution{
    public static void main(String[] args) {
        Human human1 = new Human();
        human1.setName("Volodya");
        human1.print();
    }
}
class Human{
    String name;
    public String getName() {
        return name;
    }
    public void setName(String name){
        this.name = name;
    }
    void print(){
        System.out.println(name);
    }
}
Assim, thisevita-se a introdução de novas variáveis ​​para denotar a mesma coisa, o que torna o código menos “sobrecarregado” com variáveis ​​adicionais.

Exemplo dois – Usando isso para chamar explicitamente um construtor

Chamar um construtor de outro pode ser útil quando você (curiosamente) tem vários construtores e não deseja reescrever o código de inicialização fornecido anteriormente no construtor em um novo construtor. Confuso? Nem tudo é tão assustador quanto parece. Veja o código abaixo, ele possui dois construtores de classe Human:
class Human{
    int age;
    int weight;
    int height;

    Human(int age, int weight){
        this.age = age;
        this.weight = weight;
    }
    Human(int age, int weight, int height){
        //you call the constructor with two parameters
        this(age, weight);
        //and add the missing variable
        this.height = height;
    }
}
Aqui primeiro temos um construtor de dois parâmetros que aceita int agee int weight. Digamos que escrevemos duas linhas de código nele:
this.age = age;
this.weight = weight;
e então decidiram adicionar outro construtor, com três parâmetros, que, além da idade e do peso, também leva a altura. No novo construtor você poderia escrever isto:
this.age = age;
this.weight = weight;
this.height = height;
Mas em vez de repetir o código que você já escreveu neste construtor, você pode usar uma palavra-chave para thischamar explicitamente o construtor com dois parâmetros:
this(age, weight);
// and add the missing variable:
this.height = height;
Então você está dizendo ao construtor com três parâmetros:
  • chame esse construtor, que possui dois parâmetros.
  • e adicione a variável ausente.
Isso é tudo =). Finalmente, notamos que a palavra-chave this em Java é usada apenas como parte de métodos ou construtores de uma instância de classe. Mas implicitamente, a palavra-chave thisé passada para todos os métodos, exceto os estáticos (por isso é thisfrequentemente chamada de parâmetro implícito) e pode ser usada para se referir ao objeto que chamou o método. Não há necessidade de ter medo dessa palavra-chave, porque Thisela não assusta.
Palavra-chave isto {em exemplos} - 9
Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION