Hva er dette nøkkelordet i Java?

Java er et objektorientert språk, og det kan være mange objekter til stede om gangen, på de vi kan bruke, kommer dette "nøkkelordet" her i bildet fordi det hjelper til med å peke den nåværende instansen eller nåværende objekt i en klasse.

Derfor når vi ser for å påkalle metoder for gjeldende klasse, når vi ønsker å påkalle konstruktøren av gjeldende klasse, returnerer den nåværende forekomsten fra metoder, passerer den nåværende forekomsten til metoder; i alle disse tilfellene kommer nøkkelordet til nytte.

Eksempel på bruk-saker

  1. Synkronisert blokk i multithreading bruker dette nøkkelordet som et argument
  2. Overbelastning av konstruktører

Hvorfor bruke dette nøkkelordet i Java?

  • 'denne' variabelen fungerer som en endelig variabel i java, dvs. vi kan ikke tildele noen verdi til 'denne' variabelen, dette kan krysses av ved å tilordne en verdi til 'dette' nøkkelordet og det vil føre til en kompilasjonsfeil.
  • 'dette' kan brukes til å henvise også til statiske medlemmer (men det skal ikke gjøres) fordi statiske medlemmer blir erklært bare én gang, dvs. minnetildelingen som er gjort til dem er bare en gang, og hvis vi prøver å gjøre manipulasjoner ved bruk av 'dette' nøkkelordet, så er det vil alltid manipulere dataene som er plassert på den minneplassen i stedet for å opprette data på nye minneplasser, som objekter gjør.
  • Dette forhindrer oppgaven med å utføre unødvendige tilordninger til variabler, og til tider trenger vi ikke å lage ekstra variabler også, 'dette' nøkkelordet der det er brukt gir oss sikkerhet som den aktuelle instansen blir referert til.

Betydningen av dette nøkkelordet

Eksemplene nedenfor viser at vi må lage variabler med forskjellige navn for bestemte egenskaper, de kan ganske enkelt tilordnes i konstruktør under objektinitialisering ved hjelp av dette nøkkelordet.

  • Forhindrer konflikt med medlemsvariabel og lokal variabel, man kan henvise medlemsvariabelen ved å bruke dette nøkkelordet.

public class Student (
int marks;
String subjectName;
//constructor
public Student(int marks, String subjectName)
(
this.marks = marks;
this.subjectName=subjectName;
)
public Student()
(
)
public static void main(String args())
(
Student s = new Student(1, "name");
)
)

  • Metoder for objektklasse kan også påberopes ved hjelp av dette.

//consider a method shown here
public String getName()
(
return this.toString();
)

  • Dette kan brukes i setter- og getter-metoder for å returnere gjeldende forekomster.

Public int getmarks()
(
return this.marks;
)
public void setMarks(int marks)
(
this.marks =marks;
)

Spesiell bruk av dette nøkkelordet

Her er noen bruksområder av dette nøkkelordet forklart nedenfor med implementering:

1. Bruk Med-i et felt

public class PointCoordinates (
public int xval = 0;
public int yval = 0;
//constructor
public PointCoordinates (int a, int b) (
xval = a;
yval = b;
)
public static void main(String args())
(
)
)

Men det kunne vært skrevet slik:

public class PointCoordinates (
public int xval = 0;
public int yval= 0;
//constructor
public PointCoordinates (int xval, int yval) (
this.xval = xval;
this.yval = yval;
)
public static void main(String args())
(
)
)

Så dette var noe vi forklarte i det siste avsnittet, der det kan sees at navnekonvensjonene for ett slags datafelt kan holdes enhetlige hvis vi bruker "dette" nøkkelordet.

Derfor er det ikke meningen at en utvikler skal holde rede på eller kartlegge et diagram over variabler for samme type logisk datafelt.

2. Konstruktørinvokasjon ved hjelp av dette nøkkelordet

Vi kan bruke dette nøkkelordet inne i en konstruktør og ringe en annen konstruktør derfra, i samme klasse. Dette kalles også eksplisitt påkallelse av konstruktør.

La oss vurdere et eksempel som vises nedenfor for det samme -

public class Square (
private int x;
private int side;
public Square () (
this(1);
)
public Square (int side) (
this(0, side);
)
public Square (int x, int side) (
this.x = x;
this.side = side;
)
public static void main(String args())
(
)
)

Det er tre konstruktører her på bildet. Merk at standardkonstruktøren antas å bli plassert eksplisitt når vi driver med overbelastning av konstruktører.

Disse konstruktørene initialiserer noen medlemsvariabler, kompilatoren får en indikasjon her om påkalling av konstruktør via antall parametere som er brukt i metodene.

3. Returner gjeldende klasseforekomst ved hjelp av dette nøkkelordet

class Rectangle
(
int height;
int width;
Rectangle()
(
height = 10;
width = 20;
)
//Method to return current class instance
Rectangle getObject()
(
return this;
)
public void print()
(
System.out.println(height+", "+ width);
)
public static void main(String() args)
(
Rectangle object = new Rectangle();
object.getObject().print();
)
)

Så i eksemplet vist over kan det sees at det nåværende objektet blir returnert fra en getter-metode, og på den forekomsten er den spesielle metoden “print” blitt påberopt.

4. Bruk som metodeparameter

class Rectangle
(
int height;
int width;
Rectangle()
(
height = 10;
width = 20;
)
void getObject()
(
print(this);
)
public void print(Rectangle object)
(
System.out.println(object.height + ", " + object.width);
)
public static void main(String() args)
(
Rectangle object = new Rectangle();
object.getObject();
)
)

Eksemplet siterte hvordan det nåværende objektet blir sendt til en metode som kan bruke dette objektet til dets tilpassede bruk.

Konklusjon

Vi så forskjellige brukssaker her, og siterer variantene mot bruk av dette nøkkelordet i java og hvor de skal brukes og hvor de ikke skal brukes, og disse forholdene er blitt utarbeidet på en eksplisitt måte.
'dette' nøkkelordet er vanlig blant alle programmeringsspråk, i javascript-baserte rammer, finner dette også en nøkkelrolle.
"dette" nøkkelordet kan bli overhead hvis det ikke forstås godt, og det er en god hjelp for utviklere hvis de blir forstått ordentlig.

Anbefalte artikler

Dette er en guide til dette nøkkelordet i java. Her diskuterer vi viktighet, spesielle bruksområder og eksempler på dette nøkkelordet i java sammen med kodens implementering. Du kan også se på følgende artikler for å lære mer-

  1. Objekt i Java
  2. Innkapsling i JavaScript
  3. Statisk nøkkelord i Java
  4. Overbelastning og overstyring i Java
  5. Funksjon og regler for overstyring i Python