GeeksforGeeks

vereisten-Constructors in Java
Constructor chaining is het proces van het aanroepen van een constructor van een andere constructor met betrekking tot het huidige object.
Constructorketting kan op twee manieren worden gedaan:

  • binnen dezelfde klasse: het kan gedaan worden met behulp van dit() sleutelwoord voor constructeurs in dezelfde klasse
  • uit basis klasse: door super() sleutelwoord te gebruiken om constructeur uit de basis klasse aan te roepen.

Constructorketting vindt plaats door overerving. Een subklasse constructor ‘s taak is om super klasse’ S constructor eerst te bellen. Dit zorgt ervoor dat de creatie van het object van de subklasse begint met de initialisatie van de data leden van de super klasse. Er kunnen een aantal klassen in de erfenisketen zijn. Elke constructeur roept de ketting op tot de klasse aan de top is bereikt.

Waarom hebben we constructorketting nodig ?
dit proces wordt gebruikt wanneer we meerdere taken in een enkele constructor willen uitvoeren in plaats van een code voor elke taak in een enkele constructor te creëren.we maken een aparte constructor voor elke taak en maken hun keten die het programma leesbaarder maakt.

Constructor Chaining binnen dezelfde klasse met behulp van dit () trefwoord :

Constructor Chaining In Java

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();
}
}



Uitgang:

755The Default constructor

Rules of constructor chaining :

  1. de deze () uitdrukking moet altijd de eerste regel van de constructor zijn.
  2. er moet minstens één constructor zijn zonder het sleutelwoord this () (constructor 3 in bovenstaand voorbeeld).
  3. Constructorketting kan in elke volgorde worden bereikt.

Wat gebeurt er als we de volgorde van constructeurs wijzigen?

Niets, Constructor chaining kan worden bereikt in een willekeurige volgorde

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);
}
}



Uitgang:

default580

OPMERKING: In Voorbeeld 1 wordt de standaard constructor aan het einde aangeroepen, maar in Voorbeeld 2 wordt de standaard constructor eerst aangeroepen. Daarom is de volgorde in de constructorketting niet belangrijk.

Constructor Chaining naar andere klasse met behulp van Super() trefwoord :

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");
}
}



Uitgang:

Calling parameterized constructor of baseCalling parameterized constructor of derived

Opmerking : net als in de constructor van apparaten in dezelfde klasse, super() moet de eerste regel van de constructor als super klasse constructor aangeroepen voordat de sub-klasse van de constructor.

alternatieve methode: met behulp van init block :
als we willen dat bepaalde gemeenschappelijke bronnen worden uitgevoerd met elke constructor kunnen we de code in het init block plaatsen. Init block wordt altijd uitgevoerd voordat een constructor, wanneer een constructor wordt gebruikt voor het maken van een nieuw object.

Voorbeeld 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);
}
}



Uitgang:

init blockdefaultinit block10

OPMERKING: Als er meer dan één blokken zijn ze uitgevoerd in de volgorde waarin ze zijn gedefinieerd binnen dezelfde klasse. Ga naar de ex.
voorbeeld :

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);
}
}



Uitgang :

initseconddefaultinitsecond10

Dit artikel is bijgedragen door Apoorva singh. Als je GeeksforGeeks leuk vindt en wil bijdragen, kun je ook een artikel schrijven met bijdragen.geeksforgeeks.org of mail uw artikel naar [email protected]. zie uw artikel verschijnen op de GeeksforGeeks hoofdpagina en help andere Geeks.

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.