logo

„this” odniesienie w Javie

W Javie „this” jest zmienną referencyjną odnoszącą się do bieżącego obiektu lub można powiedzieć, że this w Javie jest słowem kluczowym odnoszącym się do bieżącej instancji obiektu. Można go używać do wywoływania metod i pól bieżącej klasy, przekazywania instancji bieżącej klasy jako parametru oraz do rozróżniania zmiennych lokalnych od zmiennych instancji. Korzystanie z tego odniesienia może poprawić czytelność kodu i zmniejszyć konflikty nazewnictwa.

Java ten przykład odniesienia

W Javie jest to zmienna referencyjna odnosząca się do bieżącego obiektu, dla którego wywoływana jest metoda lub konstruktor. Można go używać do uzyskiwania dostępu do zmiennych instancji i metod bieżącego obiektu.



Poniżej znajduje się implementacja tego odniesienia:

Jawa




misja niemożliwa wszystkie filmy





// Java Program to implement> // Java this reference> // Driver Class> public> class> Person {> >// Fields Declared> >String name;> >int> age;> >// Constructor> >Person(String name,>int> age)> >{> >this>.name = name;> >this>.age = age;> >}> >// Getter for name> >public> String get_name() {>return> name; }> >// Setter for name> >public> void> change_name(String name)> >{> >this>.name = name;> >}> >// Method to Print the Details of> >// the person> >public> void> printDetails()> >{> >System.out.println(>'Name: '> +>this>.name);> >System.out.println(>'Age: '> +>this>.age);> >System.out.println();> >}> >// main function> >public> static> void> main(String[] args)> >{> >// Objects Declared> >Person first =>new> Person(>'ABC'>,>18>);> >Person second =>new> Person(>'XYZ'>,>22>);> >first.printDetails();> >second.printDetails();> >first.change_name(>'PQR'>);> >System.out.println(>'Name has been changed to: '> >+ first.get_name());> >}> }>

>

>

Wyjście

Name: ABC Age: 18 Name: XYZ Age: 22 Name has been changed to: PQR>

Wyjaśnienie

W powyższym kodzie zdefiniowaliśmy klasę Person z dwoma prywatnymi polami name i age. Zdefiniowaliśmy konstruktor klasy Person w celu inicjowania tych pól za pomocą tego słowa kluczowego. Zdefiniowaliśmy także metody pobierające i ustawiające dla tych pól, które używają tego słowa kluczowego do odniesienia się do bieżącej instancji obiektu.

W metodzie printDetails() użyliśmy tego słowa kluczowego, aby odnieść się do bieżącej instancji obiektu i wydrukować jego nazwę, wiek i odniesienie do obiektu.

W klasie Main utworzyliśmy dwa obiekty Person i na każdym obiekcie wywołaliśmy metodę printDetails(). Dane wyjściowe pokazują nazwę, wiek i odniesienie do obiektu każdej instancji obiektu.

Metody użycia „tego” w Javie

Poniżej przedstawiono sposoby użycia słowa kluczowego „this” w Javie:

  • Używanie słowa kluczowego „this” w odniesieniu do zmiennych instancji bieżącej klasy.
  • Użycie this() do wywołania konstruktora bieżącej klasy
  • Użycie słowa kluczowego „this” do zwrócenia bieżącej instancji klasy
  • Użycie słowa kluczowego „this” jako parametru metody
  • Użycie słowa kluczowego „this” do wywołania metody bieżącej klasy
  • Użycie słowa kluczowego „this” jako argumentu w wywołaniu konstruktora

1. Użycie słowa kluczowego „this” w odniesieniu do zmiennych instancji bieżącej klasy

Jawa




// Java code for using 'this' keyword to> // refer current class instance variables> class> Test {> >int> a;> >int> b;> >// Parameterized constructor> >Test(>int> a,>int> b)> >{> >this>.a = a;> >this>.b = b;> >}> >void> display()> >{> >// Displaying value of variables a and b> >System.out.println(>'a = '> + a +>' b = '> + b);> >}> >public> static> void> main(String[] args)> >{> >Test object =>new> Test(>10>,>20>);> >object.display();> >}> }>

>

jak pobrać wideo z YouTube VLC
>

Wyjście

a = 10 b = 20>

2. Użycie this() do wywołania konstruktora bieżącej klasy

Jawa




// Java code for using this() to> // invoke current class constructor> class> Test {> >int> a;> >int> b;> >// Default constructor> >Test()> >{> >this>(>10>,>20>);> >System.out.println(> >'Inside default constructor '>);> >}> >// Parameterized constructor> >Test(>int> a,>int> b)> >{> >this>.a = a;> >this>.b = b;> >System.out.println(> >'Inside parameterized constructor'>);> >}> >public> static> void> main(String[] args)> >{> >Test object =>new> Test();> >}> }>

>

>

Wyjście

Inside parameterized constructor Inside default constructor>

3. Użycie słowa kluczowego „this” do zwrócenia bieżącej instancji klasy

Jawa




// Java code for using 'this' keyword> // to return the current class instance> class> Test {> >int> a;> >int> b;> >// Default constructor> >Test()> >{> >a =>10>;> >b =>20>;> >}> >// Method that returns current class instance> >Test get() {>return> this>; }> >// Displaying value of variables a and b> >void> display()> >{> >System.out.println(>'a = '> + a +>' b = '> + b);> >}> >public> static> void> main(String[] args)> >{> >Test object =>new> Test();> >object.get().display();> >}> }>

>

>

poradnik hadoopa
Wyjście

a = 10 b = 20>

4. Użycie słowa kluczowego „this” jako parametru metody

Jawa




// Java code for using 'this'> // keyword as method parameter> class> Test {> >int> a;> >int> b;> >// Default constructor> >Test()> >{> >a =>10>;> >b =>20>;> >}> >// Method that receives 'this' keyword as parameter> >void> display(Test obj)> >{> >System.out.println(>'a = '> + obj.a> >+>' b = '> + obj.b);> >}> >// Method that returns current class instance> >void> get() { display(>this>); }> >// main function> >public> static> void> main(String[] args)> >{> >Test object =>new> Test();> >object.get();> >}> }>

normalne formy

>

>

Wyjście

a = 10 b = 20>

5. Użycie słowa kluczowego „this” do wywołania metody bieżącej klasy

Jawa




// Java code for using this to invoke current> // class method> class> Test {> >void> display()> >{> >// calling function show()> >this>.show();> >System.out.println(>'Inside display function'>);> >}> >void> show()> >{> >System.out.println(>'Inside show function'>);> >}> >public> static> void> main(String args[])> >{> >Test t1 =>new> Test();> >t1.display();> >}> }>

>

>

Wyjście

Inside show function Inside display function>

6. Użycie słowa kluczowego „this” jako argumentu w wywołaniu konstruktora

Jawa




pomysł inteligentny kontra zaćmienie

// Java code for using this as an argument in constructor> // call> // Class with object of Class B as its data member> class> A {> >B obj;> >// Parameterized constructor with object of B> >// as a parameter> >A(B obj)> >{> >this>.obj = obj;> >// calling display method of class B> >obj.display();> >}> }> class> B {> >int> x =>5>;> >// Default Constructor that create an object of A> >// with passing this as an argument in the> >// constructor> >B() { A obj =>new> A(>this>); }> >// method to show value of x> >void> display()> >{> >System.out.println(>'Value of x in Class B : '> + x);> >}> >public> static> void> main(String[] args)> >{> >B obj =>new> B();> >}> }>

>

>

Wyjście

Value of x in Class B : 5>

Zalety korzystania z „tego” odniesienia

Używanie „tego” odniesienia w Javie ma pewne zalety, jak wspomniano poniżej:

  1. Pomaga rozróżnić zmienne instancji od zmiennych lokalnych o tej samej nazwie.
  2. Można go użyć do przekazania bieżącego obiektu jako argumentu do innej metody.
  3. Można go użyć do zwrócenia bieżącego obiektu z metody.
  4. Można go użyć do wywołania konstruktora z innego przeciążonego konstruktora w tej samej klasie.

Wady używania „tego” odniesienia

Chociaż „to” odniesienie ma wiele zalet, istnieją również pewne wady:

  1. Nadużywanie tego może sprawić, że kod będzie trudniejszy do odczytania i zrozumienia.
  2. Niepotrzebne użycie tego może spowodować niepotrzebne obciążenie programu.
  3. Użycie tego w kontekście statycznym powoduje błąd w czasie kompilacji.
  4. Ogólnie rzecz biorąc, to słowo kluczowe jest użytecznym narzędziem do pracy z obiektami w Javie, ale należy go używać rozsądnie i tylko wtedy, gdy jest to konieczne.

Współautorem tego artykułu jest Mehak Narang I Amita Kumara .