java this keyword tutorial with code examples
Denna handledning förklarar ett speciellt nyckelord 'detta' i Java i detalj med enkla kodexempel. Det täcker hur, när och var man använder det här '' nyckelordet:
I denna handledning har vi introducerat ett av de viktiga begreppen i Java - ”detta” nyckelord. Vi kommer att utforska detaljerna i det här nyckelordet och presentera några exempel på dess användning i Java.
Nyckelordet 'detta' i Java är en referensvariabel. Referensvariabeln 'detta' pekar på det aktuella objektet i Java-programmet . Därför, om du vill komma åt någon medlem eller funktion av det aktuella objektet, kan du göra det genom att använda 'denna' referens.
Vad du kommer att lära dig:
Java 'detta' Inledning
Hänvisningen 'detta' kallas vanligtvis 'den här pekaren' eftersom den pekar på det aktuella objektet. ”Den här pekaren” är användbar när det finns något namn på klassattributen och parametrarna. När en sådan situation uppstår eliminerar ”den här pekaren” förvirringen eftersom vi kan komma åt parametrar med hjälp av den här pekaren.
I denna handledning kommer vi att diskutera användningen av ”den här” pekaren i olika situationer tillsammans med exempel.
När ska jag använda detta i Java?
I Java har termen 'detta' följande användningsområden:
- Referensen 'detta' används för att få tillgång till klassinstansvariabeln.
- Du kan till och med skicka 'detta' som ett argument i metodanropet.
- ”Detta” kan också användas för att implicit åberopa den nuvarande klassmetoden.
- Om du vill returnera det aktuella objektet från metoden, använd sedan 'detta'.
- Om du vill åberopa den nuvarande klasskonstruktören kan ”detta” användas.
- Konstruktören kan också ha ”detta” som ett argument.
Låt oss nu undersöka var och en av dessa användningsområden separat.
Åtkomstinstansvariabel med 'detta'
Instansvariabler för klass- och metodparametrar kan ha samma namn. 'Denna' pekare kan användas för att ta bort tvetydigheten som uppstår ur detta.
Java-programmet nedan visar hur ”detta” kan användas för att komma åt 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 ovanstående program kan du se att förekomstvariablerna och metodparametrarna delar samma namn. Vi använder ”den här” pekaren med instansvariabler för att skilja mellan förekomstvariablerna och metodparametrarna.
'Detta' passeras som metodparametern
Du kan också skicka den här pekaren som en metodparameter. Att skicka den här pekaren som metodparameter krävs vanligtvis när du har att göra med händelser. Till exempel, antar att du vill utlösa en händelse på det aktuella objektet / handtaget, så måste du utlösa det med den här pekaren.
Nedan följer en programmeringsutställning där vi har skickat den här pekaren till 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 det här programmet skapar vi ett objekt av klassen Test_method i huvudfunktionen och kallar sedan get () -metoden med det här objektet. Inne i get () -metoden skickas 'denna' pekare till printVal () -metoden som visar de aktuella instansvariablerna.
Åkalla den aktuella klassmetoden med 'detta'
Precis som du kan skicka den här pekaren till metoden kan du också använda den här pekaren för att åberopa en metod. Om du alls glömmer att ta med den här pekaren medan du använder metoden för den aktuella klassen, så lägger kompilatorn till den åt dig.
Ett exempel på att åberopa klassmetoden med ”detta” ges nedan.
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 detta program anropar klassmetoden print () show () -metoden med den här pekaren när den anropas av klassobjektet i huvudfunktionen.
Återvänd med 'detta'
Om metodens returtyp är objektet för den aktuella klassen kan du enkelt returnera den här pekaren. Med andra ord kan du returnera det aktuella objektet från en metod med hjälp av den här pekaren.
Nedan följer implementeringen av att returnera ett objekt med hjälp av 'den här' pekaren.
livscykelmodell inom programvaruteknik
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:
Ovanstående program visar metoden get () som returnerar detta som är ett objekt av klass Test_this. Med det aktuella objektet som returneras med get () -metoden kallas metodvisningen i sin tur.
Använda detta för att åberopa den nuvarande klasskonstruktören
Du kan också använda 'den här' pekaren för att anropa konstruktören för den aktuella cla.ss. Grundidén är att återanvända konstruktören. Återigen, om du har mer än en konstruktör i din klass, kan du kalla dessa konstruktörer från varandra vilket resulterar i konstruktorkedjning.
Tänk på följande 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 programmet ovan har vi två konstruktörer i klassen. Vi kallar den andra konstruktören med hjälp av 'den här' pekaren, från standardkonstruktören i klassen.
Använda 'detta' som argumentet för konstruktören
Du kan också skicka den här pekaren som ett argument till en konstruktör. Detta är mer användbart när du har flera klasser som visas i följande 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 visas i ovanstående implementering har vi två klasser och varje klasskonstruktör anropar den andra klassens konstruktör. 'Denna' pekare används för detta ändamål.
Vanliga frågor
F # 1) Vad är skillnaden mellan detta och detta () i Java?
Svar: I Java hänvisar detta till det aktuella objektet medan detta () hänvisar till konstruktören med matchande parametrar. Nyckelordet ”detta” fungerar bara med objekt. Samtalet 'detta ()' används för att anropa fler än en konstruktör från samma klass.
F # 2) Är detta nyckelord nödvändigt i Java?
Svar: Det är särskilt nödvändigt när du behöver skicka det aktuella objektet från en metod till en annan, eller mellan konstruktörerna eller helt enkelt använda det aktuella objektet för andra operationer.
F # 3) Vad är skillnaden mellan detta () och super () i Java?
Svar: Både detta () och super () är nyckelord i Java. Medan detta () representerar konstruktorn för det aktuella objektet med matchande parametrar, representerar super () konstruktorn för moderklassen.
F # 4) Kan du använda både detta () och super () i en konstruktör?
Svar: Ja, du kan använda den. Konstruktören detta () kommer att peka på den aktuella konstruktören medan super () kommer att peka på den överordnade klasskonstruktören. Kom ihåg att både detta () och super () ska vara det första uttalandet.
Slutsats
Nyckelordet ”detta” är en referens till det aktuella objektet i Java-programmet. Den kan användas för att undvika förvirring till följd av samma namn för klassvariabler (instansvariabler) och metodparametrar.
Du kan använda 'den här' pekaren på många sätt som att komma åt instansvariabler, skicka argument till metod eller konstruktör, returnera objektet etc. Pekaren 'detta' är ett viktigt nyckelord i Java och är en bra funktion för åtkomst till det aktuella objektet och dess medlemmar och funktioner.
Vi hoppas att du följde användningen av 'detta' nyckelord i Java från den här självstudien.
Rekommenderad läsning
- JAVA-handledning för nybörjare: 100+ praktiska Java-videohandledning
- Java Reflection Tutorial med exempel
- C # Handledning för undantagshantering med kodexempel
- Python DateTime-handledning med exempel
- C # -funktioner / metodhandledning med kodexempel
- Java SWING-handledning: Container, komponenter och händelsehantering
- Java Collections Framework (JCF) Tutorial
- Java-gränssnitt och abstrakt klasshandledning med exempel