java this keyword tutorial with code examples
Denne vejledning forklarer et specielt nøgleord 'dette' i Java i detaljer med enkle kodeeksempler. Det dækker hvordan, hvornår og hvor man skal bruge dette '' nøgleord:
I denne vejledning har vi introduceret et af de vigtige begreber i Java - 'dette' nøgleord. Vi vil undersøge detaljerne i 'dette' nøgleord og også præsentere nogle eksempler på dets anvendelse i Java.
Nøgleordet 'dette' i Java er en referencevariabel. Referencevariablen “dette” peger på det aktuelle objekt i Java-programmet . Derfor, hvis du vil have adgang til ethvert medlem eller funktion af det aktuelle objekt, så kan du gøre det ved at bruge 'denne' reference.
Hvad du lærer:
- Java 'denne' introduktion
- Hvornår skal jeg bruge 'dette' i Java?
- Adgang til instansvariabel ved hjælp af 'dette'
- 'Dette' bestået som metoden Parameter
- Påkald den aktuelle klassemetode med 'dette'
- Vend tilbage med 'dette'
- Brug 'dette' til at påkalde den aktuelle klassekonstruktør
- Brug af 'dette' som argumentet for konstruktøren
- Ofte stillede spørgsmål
- Konklusion
Java 'denne' introduktion
Henvisningen 'dette' betegnes generelt som 'denne markør', da den peger på det aktuelle objekt. 'Denne markør' er nyttig, når der er noget navn til klasseattributterne og parametrene. Når en sådan situation opstår, eliminerer 'denne markør' forvirring, da vi kan få adgang til parametre ved hjælp af 'denne' markør.
I denne vejledning diskuterer vi brugen af 'denne' markør i forskellige situationer sammen med eksempler.
Hvornår skal jeg bruge 'dette' i Java?
I Java har udtrykket 'dette' følgende anvendelser:
- Referencen 'dette' bruges til at få adgang til klasseinstansvariablen.
- Du kan endda videregive 'dette' som et argument i metodekaldet.
- 'Dette' kan også bruges til implicit at påkalde den nuværende klassemetode.
- Hvis du vil returnere det aktuelle objekt fra metoden, skal du bruge 'dette'.
- Hvis du vil påberåbe den aktuelle klassekonstruktør, kan 'dette' bruges.
- Konstruktøren kan også have 'dette' som et argument.
Lad os nu undersøge hver af disse anvendelser separat.
Adgang til instansvariabel ved hjælp af 'dette'
Forekomstvariabler for klasse- og metodeparametre kan have samme navn. 'Denne' markør kan bruges til at fjerne den tvetydighed, der opstår som følge af dette.
Java-programmet nedenfor viser, hvordan 'dette' kan bruges til at få adgang til instansvariabler.
class this_Test { int val1; int val2; // Parameterized constructor this_Test(int val1, int val2) { this.val1 = val1 + val1; this.val2 = val2 + val2; } void display() { System.out.println('Value val1 = ' + val1 + ' Value val2 = ' + val2); } } class Main{ public static void main(String() args) { this_Test object = new this_Test(5,10); object.display(); } }
Produktion:
I ovenstående program kan du se, at forekomstvariablerne og metodeparametrene deler de samme navne. Vi bruger 'denne' markør med instansvariabler til at skelne mellem instansvariablerne og metodeparametrene.
'Dette' bestået som metoden Parameter
Du kan også videregive denne markør som en metodeparameter. Det er normalt nødvendigt at sende denne markør som en metodeparameter, når du har at gøre med begivenheder. For eksempel, Antag at du vil udløse en begivenhed på det aktuelle objekt / håndtag, så skal du udløse den ved hjælp af denne markør.
Nedenfor er en programmeringsudstilling, hvor vi har sendt denne markør til metoden.
class Test_method { int val1; int val2; Test_method() { val1 = 10; val2 = 20; } void printVal(Test_method obj) { System.out.println('val1 = ' + obj.val1 + ' val2 = ' + obj.val2); } void get() { printVal(this); } } class Main{ public static void main(String() args) { Test_method object = new Test_method(); object.get(); } }
Produktion:
I dette program opretter vi et objekt af klassen Test_method i hovedfunktionen og kalder derefter get () -metoden med dette objekt. Inde i get () -metoden sendes 'denne' markør til printVal () -metoden, der viser de aktuelle instansvariabler.
Påkald den aktuelle klassemetode med 'dette'
Ligesom du kan sende 'denne' markør til metoden, kan du også bruge denne markør til at påkalde en metode. Hvis du overhovedet glemmer at medtage denne markør, mens du påkalder metoden for den aktuelle klasse, tilføjer compileren den for dig.
Et eksempel på påberåbelse af klassemetoden med 'dette' er givet nedenfor.
class Test_this { void print() { // calling fuctionshow() this.show(); System.out.println('Test_this:: print'); } void show() { System.out.println('Test_this::show'); } } class Main{ public static void main(String args()) { Test_this t1 = new Test_this(); t1.print(); } }
Produktion:
I dette program kalder klassemetoden print () show () -metoden ved hjælp af denne markør, når den påberåbes af klasseobjektet i hovedfunktionen.
Vend tilbage med 'dette'
Hvis metodens returtype er genstand for den aktuelle klasse, kan du nemt returnere 'denne' markør. Med andre ord kan du returnere det aktuelle objekt fra en metode ved hjælp af 'denne' markør.
Nedenfor er implementeringen af returnering af et objekt ved hjælp af 'denne' markør.
vinkelmåler ende til slut testramme for angularjs apps
class Test_this { int val_a; int val_b; //Default constructor Test_this() { val_a = 10; val_b = 20; } Test_this get() { return this; } void display() { System.out.println('val_a = ' + val_a + ' val_b = ' + val_b); } } class Main{ public static void main(String() args) { Test_this object = new Test_this(); object.get().display(); } }
Produktion:
Ovenstående program viser metoden get (), der returnerer dette, som er et objekt i klasse Test_this. Ved hjælp af det aktuelle objekt, der returneres efter get () -metoden, kaldes metodevisningen igen.
Brug 'dette' til at påkalde den aktuelle klassekonstruktør
Du kan også bruge 'denne' markør til at påkalde konstruktøren af den aktuelle cla.ss. Grundideen er at genbruge konstruktøren. Igen, hvis du har mere end en konstruktør i din klasse, så kan du kalde disse konstruktører fra hinanden, hvilket resulterer i konstruktorkæde.
Overvej følgende Java-program.
class This_construct { int val1; int val2; //Default constructor This_construct() { this(10, 20); System.out.println('Default constructor
'); } //Parameterized constructor This_construct(int val1, int val2) { this.val1 = val1; this.val2 = val2; System.out.println('Parameterized constructor'); } } class Main{ public static void main(String() args) { This_construct object = new This_construct(); } }
Produktion:
I ovenstående program har vi to konstruktører i klassen. Vi kalder den anden konstruktør ved hjælp af 'denne' markør, fra standardkonstruktøren i klassen.
Brug af 'dette' som argumentet for konstruktøren
Du kan også videregive 'denne' markør som et argument til en konstruktør. Dette er mere nyttigt, når du har flere klasser som vist i den følgende implementering.
class Static_A { Static_B obj; Static_A(Static_B obj) { this.obj = obj; obj.display(); } } class Static_B { int x = 10; Static_B() { Static_A obj = new Static_A(this); } void display() { System.out.println('B::x = ' + x); } } class Main{ public static void main(String() args) { Static_B obj = new Static_B(); } }
Produktion:
Som vist i ovenstående implementering har vi to klasser, og hver klassekonstruktør kalder den anden klasses konstruktør. 'Denne' markør bruges til dette formål.
Ofte stillede spørgsmål
Q # 1) Hvad er forskellen mellem dette og dette () i Java?
Svar: I Java henviser dette til det aktuelle objekt, mens dette () henviser til konstruktøren med matchende parametre. Nøgleordet 'dette' fungerer kun med objekter. Opkaldet “dette ()” bruges til at kalde mere end en konstruktør fra samme klasse.
Q # 2) Er dette nøgleord nødvendigt i Java?
Svar: Det er især nødvendigt, når du skal videregive det aktuelle objekt fra en metode til en anden eller mellem konstruktørerne eller blot bruge det aktuelle objekt til andre operationer.
Q # 3) Hvad er forskellen mellem dette () og super () i Java?
Svar: Både dette () og super () er nøgleord i Java. Mens dette () repræsenterer konstruktøren af det aktuelle objekt med matchende parametre, repræsenterer super () konstruktøren for den overordnede klasse.
Q # 4) Kan du bruge både dette () og super () i en konstruktør?
Svar: Ja, du kan bruge det. Konstruktøren dette () vil pege på den aktuelle konstruktør, mens super () vil pege på den overordnede klassekonstruktør. Husk at både dette () og super () skal være den første sætning.
Konklusion
Nøgleordet 'dette' er en henvisning til det aktuelle objekt i Java-programmet. Det kan bruges til at undgå forvirring som følge af de samme navne for klassevariabler (instansvariabler) og metodeparametre.
Du kan bruge 'denne' markør på mange måder som at få adgang til instansvariabler, videregive argumenter til metode eller konstruktør, returnere objektet osv. Markøren 'dette' er et vigtigt nøgleord i Java og er en nyttig funktion til at få adgang til det aktuelle objekt og dets medlemmer og funktioner.
Vi håber, at du fulgte brugen af 'dette' nøgleord i Java fra denne vejledning.
Anbefalet læsning
- JAVA-vejledning til begyndere: 100+ praktiske Java-videovejledninger
- Java Reflection Tutorial med eksempler
- C # Exception Handling Tutorial med kodeeksempler
- Python DateTime-tutorial med eksempler
- C # Funktioner / Metoder Vejledning med kodeeksempler
- Java SWING Tutorial: Container, komponenter og håndtering af begivenheder
- Java Collections Framework (JCF) vejledning
- Java-interface og abstrakt klasseundervisning med eksempler