java this keyword tutorial with code examples
Denne opplæringen forklarer et spesielt nøkkelord ‘dette’ i Java i detalj med enkle kodeeksempler. Det dekker hvordan, når og hvor du kan bruke dette 'nøkkelordet:
I denne veiledningen har vi introdusert et av de viktige begrepene i Java - ‘dette’ nøkkelordet. Vi vil utforske detaljene i ‘dette’ nøkkelordet og også presentere noen eksempler på bruken av det i Java.
Nøkkelordet 'dette' på Java er en referansevariabel. Referansevariabelen “dette” peker på det gjeldende objektet i Java-programmet . Derfor, hvis du vil ha tilgang til et hvilket som helst medlem eller funksjon av det nåværende objektet, kan du gjøre det ved å bruke 'denne' referansen.
Hva du vil lære:
- Java ‘this’ Introduksjon
- Når skal jeg bruke ‘dette’ i Java?
- Få tilgang til instansvariabel ved å bruke 'dette'
- ‘Dette’ bestått som metodeparameter
- Påkalle gjeldende klassemetode med ‘dette’
- Gå tilbake med ‘dette’
- Bruk ‘dette’ for å påkalle den nåværende klassekonstruktøren
- Bruker ‘dette’ som argumentet for konstruktøren
- ofte stilte spørsmål
- Konklusjon
Java ‘this’ Introduksjon
Referansen ‘dette’ blir vanligvis betegnet som ‘denne pekeren’ da den peker mot det nåværende objektet. ‘Denne pekeren’ er nyttig når det er noe navn på klasseattributtene og parametrene. Når en slik situasjon oppstår, eliminerer ‘denne pekeren’ forvirringen, ettersom vi kan få tilgang til parametere ved hjelp av ‘denne’ pekeren.
I denne veiledningen vil vi diskutere bruken av ‘denne’ pekeren i forskjellige situasjoner sammen med eksempler.
Når skal jeg bruke ‘dette’ i Java?
I Java har begrepet ‘dette’ følgende bruksområder:
- Referansen ‘dette’ brukes for å få tilgang til klasseinstansvariabelen.
- Du kan til og med passere ‘dette’ som et argument i metodeanropet.
- ‘Dette’ kan også brukes til implisitt å påkalle gjeldende klassemetode.
- Hvis du vil returnere det nåværende objektet fra metoden, så bruk ‘dette’.
- Hvis du vil påkalle gjeldende klassekonstruktør, kan ‘dette’ brukes.
- Konstruktøren kan også ha ‘dette’ som argument.
La oss nå se på hver av disse bruksområdene hver for seg.
Få tilgang til instansvariabel ved å bruke 'dette'
Forekomstvariabler av klasse- og metodeparametere kan ha samme navn. ‘Denne’ pekeren kan brukes til å fjerne tvetydigheten som oppstår av dette.
Java-programmet nedenfor viser hvordan ‘dette’ kan brukes til å få tilgang til forekomstvariabler.
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(); } }
Produksjon:
I programmet ovenfor kan du se at forekomstvariablene og metodeparametrene deler de samme navnene. Vi bruker ‘denne’ pekeren med forekomstvariabler for å skille mellom forekomstvariablene og metodeparametrene.
‘Dette’ bestått som metodeparameter
Du kan også sende denne pekeren som en metodeparameter. Å sende denne pekeren som en metodeparameter er vanligvis nødvendig når du har å gjøre med hendelser. For eksempel, antar at du vil utløse en hendelse på gjeldende objekt / håndtak, så må du utløse den ved hjelp av denne pekeren.
Nedenfor er en programmeringsutstilling hvor vi har gitt denne pekeren 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(); } }
Produksjon:
I dette programmet lager vi et objekt av klassen Test_method i hovedfunksjonen og kaller deretter get () -metoden med dette objektet. Inne i get () -metoden sendes 'denne' pekeren til printVal () -metoden som viser gjeldende forekomstvariabler.
Påkalle gjeldende klassemetode med ‘dette’
Akkurat som du kan overføre ‘denne’ pekeren til metoden, kan du også bruke denne pekeren til å påkalle en metode. Hvis du i det hele tatt glemmer å ta med denne pekeren mens du påkaller metoden til gjeldende klasse, så legger kompilatoren den for deg.
Et eksempel på å påkalle klassemetoden med ‘dette’ er gitt 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(); } }
Produksjon:
I dette programmet kaller klassemetoden print () show () -metoden ved hjelp av denne pekeren når den påkalles av klasseobjektet i hovedfunksjonen.
Gå tilbake med ‘dette’
Hvis returtypen til metoden er gjenstand for den gjeldende klassen, kan du enkelt returnere ‘denne’ pekeren. Med andre ord, du kan returnere det nåværende objektet fra en metode ved hjelp av ‘denne’ pekeren.
Nedenfor er implementeringen av å returnere et objekt ved hjelp av 'denne' pekeren.
livssyklusmodell i programvareteknikk
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(); } }
Produksjon:
Ovennevnte program viser metoden get () som returnerer dette som er et objekt i klassen Test_this. Ved å bruke det gjeldende objektet som returneres etter get () -metoden, blir metodevisningen i sin tur kalt.
Bruk ‘dette’ for å påkalle den nåværende klassekonstruktøren
Du kan også bruke ‘denne’ pekeren til å påkalle konstruktøren til gjeldende cla.ss. Grunnideen er å gjenbruke konstruktøren. Igjen, hvis du har mer enn en konstruktør i klassen din, kan du kalle disse konstruktørene fra hverandre, noe som resulterer i konstruktorkjetting.
Tenk på 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(); } }
Produksjon:
I programmet ovenfor har vi to konstruktører i klassen. Vi kaller den andre konstruktøren ved hjelp av ‘denne’ pekeren, fra standardkonstruktøren i klassen.
Bruker ‘dette’ som argumentet for konstruktøren
Du kan også overføre ‘denne’ pekeren som et argument til en konstruktør. Dette er mer nyttig når du har flere klasser som vist i 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(); } }
Produksjon:
Som vist i implementeringen ovenfor, har vi to klasser, og hver klassekonstruktør kaller den andre klassens konstruktør. ‘Denne’ pekeren brukes til dette formålet.
ofte stilte spørsmål
Q # 1) Hva er forskjellen mellom dette og dette () i Java?
Svar: I Java refererer dette til gjeldende objekt mens dette () refererer til konstruktøren med samsvarende parametere. Nøkkelordet ‘dette’ fungerer bare med objekter. Kallen “dette ()” brukes til å kalle mer enn en konstruktør fra samme klasse.
Q # 2) Er dette søkeordet nødvendig i Java?
Svar: Det er nødvendig, spesielt når du trenger å overføre det nåværende objektet fra en metode til en annen, eller mellom konstruktørene eller bare bruke det nåværende objektet til andre operasjoner.
Q # 3) Hva er forskjellen mellom dette () og super () i Java?
Svar: Både dette () og super () er nøkkelord i Java. Mens dette () representerer konstruktøren til det nåværende objektet med samsvarende parametere, representerer super () konstruktøren til overordnet klasse.
Q # 4) Kan du bruke både dette () og super () i en konstruktør?
Svar: Ja, du kan bruke den. Konstruktøren dette () vil peke på den nåværende konstruktøren mens super () vil peke på foreldreklassekonstruktøren. Husk at både dette () og super () skal være den første utsagnet.
Konklusjon
Nøkkelordet ‘dette’ er en referanse til gjeldende objekt i Java-programmet. Den kan brukes til å unngå forvirring som skyldes de samme navnene på klassevariabler (instansvariabler) og metodeparametere.
Du kan bruke 'denne' pekeren på mange måter, som å få tilgang til forekomstvariabler, sende argumenter til metode eller konstruktør, returnere objektet osv. Pekeren 'dette' er et viktig nøkkelord i Java og er en nyttig funksjon for tilgang til det nåværende objektet og dets medlemmer og funksjoner.
Vi håper du fulgte bruken av ‘dette’ nøkkelordet i Java fra denne veiledningen.
Anbefalt lesing
- JAVA-opplæring for nybegynnere: 100+ praktiske Java-videoveiledninger
- Java Reflection Tutorial med eksempler
- C # Exception Handling Tutorial med kodeeksempler
- Python DateTime Tutorial med eksempler
- C # Funksjoner / Metoder Opplæring med kodeeksempler
- Java SWING Tutorial: Container, Components and Event Handling
- Java Collections Framework (JCF) Tutorial
- Java-grensesnitt og abstrakt klasseopplæring med eksempler