Автор оригинала: Pankaj Kumar.
Что такое ключевое слово ” это ” в Java?
- Java это ключевое слово возвращает ссылку на текущий объект.
- Мы можем получить доступ к переменной объекта, вызвать метод или конструктор текущего объекта, используя это ключевое слово.
- Ключевое слово Java “this” может использоваться для ссылки на любой элемент текущего объекта из метода экземпляра или конструктора.
- это ключевое слово в основном используется, чтобы избежать путаницы между атрибутом класса и параметром. Например, если параметр функции-члена имеет то же имя, что и имя переменной объекта, то функциональность может работать неправильно.
Java этот пример ключевого слова
Допустим, у нас есть класс, как показано ниже.
public class Item{ String name; // Constructor with a parameter and this keyword public Item(String name) { this.name = name; } // Call the constructor public static void main(String[] args) { Item Obj = new Item("car"); System.out.println(Obj.name); } }
Вывод с “этим” в качестве ссылки на текущий объект
Код выводит название товара как “автомобиль”. Теперь давайте посмотрим, что произойдет, когда мы удалим ключевое слово “this” из конструктора.
public class Item{ String name; // Constructor with a parameter and without this keyword public Item(String name) { name = name; } // Call the constructor public static void main(String[] args) { Item Obj = new Item("car"); System.out.println(Obj.name); } }
Вывод без “этого” в качестве ссылки на текущий объект
Вывод без ключевого слова “this”
В приведенном выше примере показано применение этой переменной для доступа к атрибуту объекта.
Мы не можем создать две локальные переменные с одинаковыми именами.
Однако разрешается создавать одну переменную экземпляра и одну локальную переменную или параметр метода с одинаковым именем.
В этом случае локальная переменная скроет переменную экземпляра, которая называется Затенение переменной .
Чтобы решить эту проблему, мы используем ключевое слово this с полем, указывающим на переменную экземпляра вместо локальной переменной.
Общее использование ключевого слова “this”
- Ключевое слово Java “this” может использоваться для ссылки на переменную экземпляра текущего класса.
- Мы можем использовать эту функцию() для вызова текущего конструктора класса. Мы также можем передавать параметры в этом операторе ().
- Ключевое слово Java “this” может использоваться для вызова текущего метода класса (неявно).
- Ключевое слово “this” может быть передано в качестве аргумента при вызове метода.
- Мы можем использовать ключевое слово “this” для возврата текущего экземпляра класса.
- Мы можем использовать ключевое слово “this” для доступа к атрибутам объекта в случае затенения переменных.
Существует также специальный тип конструктора, называемый Конструктор копирования . В Java нет конструктора копирования по умолчанию, но мы можем создать его явно, используя это ключевое слово.
Ключевое слово Copy-Конструктор и метод отображения () “это”
package com.journaldev.examples; public class Blog { String name; int popularity; // parameterized constructor public Blog(String name, int popularity) { this.name = name; this.popularity = popularity; } // Copy-Constructor public Blog(Blog b) { this.popularity = b.popularity; this.name = b.name; } public void display() { System.out.println("name: " + this.name); System.out.println("popularity: " + this.popularity + " %"); } public static void main(String[] args) { // parameterized constructor call Blog obj1 = new Blog("JournalDev", 100); obj1.display(); // Copy-Constructor call Blog obj2 = new Blog(obj1); obj2.display(); } }
Вывод метода Copy-Constructor & display()
Вывод конструктора Копирования
В приведенном выше коде мы видели применение ключевого слова “this” в конструкторе копирования и методе display() .
Вызов конструктора с использованием этого ключевого слова
Давайте рассмотрим пример вызова конструктора с использованием этого ключевого слова.
package com.journaldev.examples; public class Data { Data() { System.out.println("default constructor"); } Data(int i) { this(); System.out.println("int parameter constructor"); } Data(String s) { this(10); System.out.println("string parameter constructor"); } public static void main(String[] args) { Data d = new Data(20); System.out.println("------"); Data d1 = new Data("Hi"); } }
Вывод :
default constructor int parameter constructor ------ default constructor int parameter constructor string parameter constructor
Используя это ключевое слово для вызова метода объекта
Давайте рассмотрим пример вызова метода объекта с использованием этого ключевого слова.
package com.journaldev.examples; public class Data { Data() { this.foo(); } private void foo() { System.out.println("foo method"); } public static void main(String[] args) { Data d = new Data(); } }
Использование этого ключевого слова в аргументе метода
package com.journaldev.examples; public class Data { private int id; public Data(int id) { this.id = id; bar(this); } private void bar(Data data) { System.out.println(data.id); } public static void main(String[] args) { Data d = new Data(20); } }
Java это ключевое слово для возврата текущего объекта
Давайте рассмотрим простой пример, где мы будем использовать это ключевое слово для возврата текущего объекта из метода.
private Data bar(Data data) { System.out.println(data.id); return this; }
Вывод
Java это ключевое слово полезно для получения ссылки на текущий объект. Это полезно для доступа к атрибутам объекта в случае затенения переменных. Мы также можем использовать его для вызова текущих конструкторов классов.