Dette nøgleord i Java: Hvad er & Sådan bruges det med eksempel

Indholdsfortegnelse:

Anonim

Hvad er dette nøgleord i Java?

dette nøgleord i Java er en referencevariabel, der refererer til det aktuelle objekt for en metode eller en konstruktør. Hovedformålet med at bruge dette nøgleord i Java er at fjerne forvirringen mellem klasseattributter og parametre, der har samme navne.

Følgende er forskellige anvendelser af 'dette' nøgleord i Java:

  • Det kan bruges til at henvise til instansvariabler i den aktuelle klasse
  • Det kan bruges til at påkalde eller indlede den aktuelle klassekonstruktør
  • Det kan videregives som et argument i metodekaldet
  • Det kan sendes som argument i konstruktøropkaldet
  • Det kan bruges til at returnere den aktuelle klasseinstans

Klik her, hvis videoen ikke er tilgængelig

Forstå 'dette' nøgleord med et eksempel.

Java dette nøgleord Eksempel
  1. Klasse : klasse Konto
  2. Instansvariabel : a og b
  3. Metodesætdata : For at indstille værdien for a og b.
  4. Metode Vis data : For at få vist værdierne for a og b.
  5. Hovedmetode: hvor vi opretter et objekt til konto klasse og opkaldsmetoder indstiller data og viser data.

Lad os kompilere og køre koden

Vores forventede output for A og B skal initialiseres til henholdsvis værdierne 2 og 3.

Men værdien er 0, hvorfor? Lad os undersøge det.

I metoden Sæt data erklæres argumenterne som a og b, mens forekomstvariablerne også navngives som a og b.

Under udførelse er compileren forvirret. Uanset om "a" på venstre side af den tildelte operator er forekomstvariablen eller den lokale variabel. Derfor indstiller den ikke værdien af ​​'a', når metodesætdata kaldes.

Løsningen er "dette" nøgleord

Tilføj både 'a' og 'b' med Java dette nøgleord efterfulgt af en prik (.) -Operator.

Under kodeudførelse, når et objekt kalder metoden 'setdata'. Nøgleordet 'dette' erstattes af objektbehandleren "obj." (Se billedet nedenfor).

Så nu ved compileren,

  • 'A' på venstre side er en instansvariabel.
  • Mens 'a' på højre side er en lokal variabel

Variablerne initialiseres korrekt, og den forventede output vises.

Antag at du er smart nok til at vælge forskellige navne til din instansvariabel og metodeargumenter.

Men denne gang opretter du to objekter af klassen, der hver kalder den indstillede datametode.

Hvordan kompilatoren bestemmer, om det skal fungere på instansvariablen for objekt 1 eller objekt 2.

Nå, compileren tilføjer implicit instansvariablen med "dette" nøgleord (billedet nedenfor).

Sådan, at når objekt 1 kalder den indstillede datametode, tilføjes en instansvariabel med dens referencevariabel.

Mens objekt 2 kalder den indstillede datametode, ændres en instansvariabel af objekt 2.

Denne proces varetages af kompilatoren selv. Du behøver ikke at tilføje 'dette' nøgleord eksplicit, medmindre der er en usædvanlig situation som i vores eksempel.

Eksempel: For at lære brugen af ​​"dette" nøgleord

Trin 1) Kopier følgende kode i et notesblok.

class Account{int a;int b;public void setData(int a ,int b){a = a;b = b;}public void showData(){System.out.println("Value of A ="+a);System.out.println("Value of B ="+b);}public static void main(String args[]){Account obj = new Account();obj.setData(2,3);obj.showData();}}

Trin 2) Gem, kompilér og kør koden.
Trin 3) Værdien af ​​a & b vises som nul? For at rette fejlen tilføj linje nr. 6 & 7 med " dette " nøgleord.

this.a =a;this.b =b;

Trin 4) Gem, kompiler og kør koden. Denne gang er værdierne for a & b indstillet til henholdsvis 2 og 3.

Resumé

  • dette nøgleord i Java er en referencevariabel, der refererer til det aktuelle objekt.
  • En af brugen af ​​dette nøgleord i Java er at henvise til den aktuelle klasseinstansvariabel
  • Det kan bruges til at påkalde eller indlede den aktuelle klassekonstruktør
  • Det kan videregives som et argument i metodekaldet
  • denne markør i Java kan sendes som argument i konstruktøropkaldet
  • denne operatør i Java kan bruges til at returnere den aktuelle klasseinstans
  • dette i Java er en henvisning til det aktuelle objekt, hvis metode kaldes.
  • Du kan bruge "dette" nøgleord for at undgå navngivning af konflikter i metoden / konstruktøren for din forekomst / objekt.