Автор оригинала: 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 это ключевое слово полезно для получения ссылки на текущий объект. Это полезно для доступа к атрибутам объекта в случае затенения переменных. Мы также можем использовать его для вызова текущих конструкторов классов.