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 hadoopaWyjś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:
- Pomaga rozróżnić zmienne instancji od zmiennych lokalnych o tej samej nazwie.
- Można go użyć do przekazania bieżącego obiektu jako argumentu do innej metody.
- Można go użyć do zwrócenia bieżącego obiektu z metody.
- 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:
- Nadużywanie tego może sprawić, że kod będzie trudniejszy do odczytania i zrozumienia.
- Niepotrzebne użycie tego może spowodować niepotrzebne obciążenie programu.
- Użycie tego w kontekście statycznym powoduje błąd w czasie kompilacji.
- 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 .