GeeksforGeeks

Forutsetning-Konstruktører I Java
Constructor chaining er prosessen med å kalle en konstruktør fra en annen konstruktør med hensyn til gjeldende objekt.
Constructor chaining kan gjøres på to måter:

  • Innen samme klasse: Det kan gjøres ved å bruke dette () søkeordet for konstruktører i samme klasse
  • fra grunnklasse: ved å bruke super () søkeord for å ringe konstruktør fra grunnklassen.

Konstruktør kjeding skjer gjennom arv. En sub klasse konstruktør oppgave er å kalle super klasse konstruktør først. Dette sikrer at opprettelsen av underklassens objekt starter med initialiseringen av datamedlemmene i superklassen. Det kan være noen antall klasser i arv kjeden. Hver konstruktør kaller opp kjeden til klassen på toppen er nådd.

Hvorfor trenger vi constructor chaining ?
denne prosessen brukes når vi vil utføre flere oppgaver i en enkelt konstruktør i stedet for å lage en kode for hver oppgave i en enkelt konstruktør, lager vi en egen konstruktør for hver oppgave og gjør kjeden som gjør programmet mer lesbart.

Konstruktør Kjeding i samme klasse ved hjelp av dette () søkeordet :

Constructor Chaining In Utah

class Temp
{
Temp()
{
this(5);
System.out.println("The Default constructor");
}
Temp(int x)
{
this(5, 15);
System.out.println(x);
}
Temp(int x, int y)
{
System.out.println(x * y);
}
public static void main(String args)
{
new Temp();
}
}



Utgang:

755The Default constructor

regler for konstruktørkjetting :

  1. dette () uttrykket skal alltid være den første linjen i konstruktøren.
  2. Det bør være minst en konstruktør uten dette () søkeordet (konstruktør 3 i eksemplet ovenfor).
  3. Constructor kjeding kan oppnås i hvilken som helst rekkefølge.

Hva skjer hvis vi endrer rekkefølgen på konstruktører?

Ingenting, Constructor chaining kan oppnås i hvilken som helst rekkefølge

class Temp
{
Temp()
{
System.out.println("default");
}
Temp(int x)
{
this();
System.out.println(x);
}
Temp(int x, int y)
{
this(5);
System.out.println(x * y);
}
public static void main(String args)
{
new Temp(8, 10);
}
}



Utgang:

default580

MERK: I eksempel 1, standard konstruktør påberopes på slutten, men i eksempel 2 standard konstruktør påberopes først. Derfor er ordre i konstruktørkjetting ikke viktig.

Konstruktør Kjeding til annen klasse ved hjelp av super () søkeord :

class Base
{
String name;
Base()
{
this("");
System.out.println("No-argument constructor of" +
" base class");
}
Base(String name)
{
this.name = name;
System.out.println("Calling parameterized constructor"
+ " of base");
}
}
class Derived extends Base
{
Derived()
{
System.out.println("No-argument constructor " +
"of derived");
}
Derived(String name)
{
super(name);
System.out.println("Calling parameterized " +
"constructor of derived");
}
public static void main(String args)
{
Derived obj = new Derived("test");
}
}



Utgang:

Calling parameterized constructor of baseCalling parameterized constructor of derived

Merk: I Likhet med constructor chaining i samme klasse, super() bør være den første linjen i konstruktøren som super klasse konstruktør påberopes før underklassen konstruktør.

Alternativ metode: bruk Av Init-blokk:
når vi vil at visse vanlige ressurser skal utføres med hver konstruktør, kan vi sette koden i init-blokken. Init-blokk utføres alltid før en konstruktør, når en konstruktør brukes til å lage et nytt objekt.

Eksempel 1:

class Temp
{
{
System.out.println("init block");
}
Temp()
{
System.out.println("default");
}
Temp(int x)
{
System.out.println(x);
}
public static void main(String args)
{
new Temp();
new Temp(10);
}
}



Utgang:

init blockdefaultinit block10

MERK: hvis det er flere blokker, utføres de i den rekkefølgen de er definert i samme klasse. Se eksen.
Eksempel :

class Temp
{
{
System.out.println("init");
}
Temp()
{
System.out.println("default");
}
Temp(int x)
{
System.out.println(x);
}
{
System.out.println("second");
}
public static void main(String args)
{
new Temp();
new Temp(10);
}
}



Utgang :

initseconddefaultinitsecond10

Denne artikkelen er bidratt Av Apoorva singh. Hvis Du liker GeeksforGeeks og ønsker å bidra, kan du også skrive en artikkel ved hjelp av contribute.geeksforgleder.org eller send artikkelen din til [email protected]. Se artikkelen din vises på GeeksforGeeks hovedside og hjelpe andre Geeks.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert.