In Java, 'this' è una variabile di riferimento che si riferisce all'oggetto corrente, o si può dire che in Java è una parola chiave che si riferisce all'istanza dell'oggetto corrente. Può essere utilizzato per chiamare metodi e campi della classe corrente, per passare un'istanza della classe corrente come parametro e per distinguere tra variabili locali e di istanza. L'utilizzo di questo riferimento può migliorare la leggibilità del codice e ridurre i conflitti di denominazione.
Java questo esempio di riferimento
In Java, questa è una variabile di riferimento che fa riferimento all'oggetto corrente su cui viene richiamato il metodo o il costruttore. Può essere utilizzato per accedere alle variabili di istanza e ai metodi dell'oggetto corrente.
Di seguito è riportata l'implementazione di questo riferimento:
Giava
disegno del rettangolo gimp
// 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());> >}> }> |
>
>Produzione
Name: ABC Age: 18 Name: XYZ Age: 22 Name has been changed to: PQR>
Spiegazione
Nel codice precedente, abbiamo definito una classe Persona con due campi privati nome ed età. Abbiamo definito il costruttore della classe Person per inizializzare questi campi utilizzando questa parola chiave. Abbiamo anche definito metodi getter e setter per questi campi che utilizzano questa parola chiave per fare riferimento all'istanza dell'oggetto corrente.
Nel metodo printDetails(), abbiamo utilizzato questa parola chiave per fare riferimento all'istanza dell'oggetto corrente e stamparne il nome, l'età e il riferimento all'oggetto.
Nella classe Main abbiamo creato due oggetti Person e chiamato il metodo printDetails() su ciascun oggetto. L'output mostra il nome, l'età e il riferimento all'oggetto di ciascuna istanza dell'oggetto.
Metodi per utilizzare 'questo' in Java
Di seguito sono riportati i modi per utilizzare la parola chiave 'this' in Java menzionata di seguito:
- Utilizzando la parola chiave 'this' per fare riferimento alle variabili di istanza della classe corrente.
- Utilizzando this() per invocare il costruttore della classe corrente
- Utilizzando la parola chiave 'this' per restituire l'istanza della classe corrente
- Utilizzando la parola chiave 'this' come parametro del metodo
- Utilizzando la parola chiave 'this' per richiamare il metodo della classe corrente
- Utilizzando la parola chiave 'this' come argomento nella chiamata del costruttore
1. Utilizzo della parola chiave 'this' per fare riferimento alle variabili di istanza della classe corrente
Giava
corda in c
// 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();> >}> }> |
>
>Produzione
a = 10 b = 20>
2. Utilizzo di this() per richiamare il costruttore della classe corrente
Giava
// 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();> >}> }> |
>
>Produzione
Inside parameterized constructor Inside default constructor>
3. Utilizzo della parola chiave 'this' per restituire l'istanza della classe corrente
Giava
// 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();> >}> }> |
formattare la data in una stringa
>
>Produzione
a = 10 b = 20>
4. Utilizzo della parola chiave 'this' come parametro del metodo
Giava
// 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();> >}> }> |
>
>Produzione
a = 10 b = 20>
5. Utilizzo della parola chiave 'this' per richiamare il metodo della classe corrente
Giava
parafrasare se di Rudyard Kipling
// 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();> >}> }> |
>
multithreading Java
>Produzione
Inside show function Inside display function>
6. Utilizzo della parola chiave 'this' come argomento nella chiamata del costruttore
Giava
// 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();> >}> }> |
>
>Produzione
Value of x in Class B : 5>
Vantaggi dell’utilizzo del riferimento “questo”.
Ci sono alcuni vantaggi nell'usare il riferimento 'questo' in Java come menzionato di seguito:
- Aiuta a distinguere tra variabili di istanza e variabili locali con lo stesso nome.
- Può essere utilizzato per passare l'oggetto corrente come argomento a un altro metodo.
- Può essere utilizzato per restituire l'oggetto corrente da un metodo.
- Può essere utilizzato per invocare un costruttore da un altro costruttore sovraccaricato nella stessa classe.
Svantaggi dell’utilizzo del riferimento “questo”.
Sebbene 'questo' riferimento presenti molti vantaggi, ci sono anche alcuni svantaggi:
- Un uso eccessivo di questo può rendere il codice più difficile da leggere e comprendere.
- L'utilizzo inutilmente di questo può aggiungere un sovraccarico non necessario al programma.
- L'utilizzo di questo in un contesto statico genera un errore in fase di compilazione.
- Nel complesso, questa parola chiave è uno strumento utile per lavorare con gli oggetti in Java, ma dovrebbe essere utilizzata con giudizio e solo quando necessario.
Questo articolo è stato fornito da Mehak Narang E Amit Kumar .