logo

Hvad er constructor chaining i Java?

I Java, konstruktør kæde er en sekvens af påkaldelse konstruktører ved initialisering af et objekt. Det bruges, når vi ønsker at påkalde et antal konstruktører, den ene efter den anden ved kun at bruge en instans. I dette afsnit vil vi diskutere konstruktørkæde i Java i detaljer med korrekte eksempler. Lad os tage et hurtigt kig på hvad er en konstruktør i Java.

Konstruktør

I Java , er en konstruktør det samme som en metode, men den eneste forskel er, at konstruktøren har samme navn som klassenavnet. Det bruges til at oprette en forekomst af klassen. Det kaldes automatisk, når vi opretter et objekt i klassen. Den har ingen returtype. Husk at en konstruktør ikke kan være det abstrakt , endelig , synkroniseret , og statisk . Vi kan ikke tilsidesætte en konstruktør.

Der er to typer konstruktører i Java:

  • Default Constructor (også kendt som en no-argument constructor)
  • Parametriseret konstruktør

Konstruktør kæde

I konstruktørkæden kaldes en konstruktør fra en anden konstruktør i samme klasse, som denne proces er kendt som konstruktør kæde. Det sker gennem arv. Når vi opretter en instans af en afledt klasse, startes først alle konstruktørerne af den nedarvede klasse (basisklasse), hvorefter konstruktøren af ​​den kaldende klasse (afledt klasse) aktiveres.

Vi kan opnå konstruktørkæder på to måder:

hvad er obj i java
    Inden for samme klasse:Hvis konstruktørerne tilhører samme klasse, bruger vi det her Fra basisklassen:Hvis konstruktøren tilhører forskellige klasser (forældre- og børneklasser), bruger vi super nøgleord for at kalde konstruktøren fra basisklassen.

Husk, at ændring af rækkefølgen af ​​konstruktøren ikke påvirker outputtet.

Hvad er constructor chaining i Java

Behovet for konstruktørkæde

Antag, at der er fem opgaver, der skal udføres. Der er to måder at udføre disse opgaver på, enten implementere alle opgaverne i en enkelt konstruktør eller oprette separate opgaver i en enkelt konstruktør.

Ved at bruge konstruktørens kædemekanisme kan vi implementere flere opgaver i en enkelt konstruktør. Så hver gang vi står over for sådanne typer problemer, bør vi bruge constructor chaining. Vi kan gøre programmet mere læsbart og forståeligt ved at bruge constructor chaining.

scan.next java

Regler for konstruktørkæde

  • Et udtryk der bruger det her nøgleordet skal være den første linje i konstruktøren.
  • Bestillebetyder ikke noget i constructor chaining.
  • Der skal eksistere mindst én konstruktør, der ikke bruger det her

Konstruktør Kalder fra en anden konstruktør

Kaldningen af ​​konstruktøren kan udføres på to måder:

    Ved at bruge dette() søgeord:Det bruges, når vi vil kalde den aktuelle klassekonstruktør inden for samme klasse.Ved at bruge super() nøgleord:Det bruges, når vi vil kalde superklasse-konstruktøren fra basisklassen.

Bemærk: I den samme konstruktørblok kan vi ikke bruge denne() og super() samtidigt.

Lad os forstå disse to begreber gennem Java-programmer.

Eksempler på konstruktørkæder

Ringer til Current Class Constructor

Vi bruger det her() søgeord, hvis vi vil kalde den aktuelle klassekonstruktør inden for samme klasse. Brugen af ​​denne() er obligatorisk, fordi JVM aldrig sætte det automatisk som super() søgeord. Bemærk, at denne() skal være den første linje i konstruktøren. Der skal eksistere mindst én konstruktør uden dette() søgeord .

Syntaks:

 this(); or this(parameters list); 

For eksempel:

 this(); this('Javatpoint'); 

Lad os oprette et Java-program og kalde den nuværende klassekonstruktør.

ConstructorChain.java

 public class ConstructorChain { //default constructor ConstructorChain() { this('Javatpoint'); System.out.println('Default constructor called.'); } //parameterized constructor ConstructorChain(String str) { System.out.println('Parameterized constructor called'); } //main method public static void main(String args[]) { //initializes the instance of example class ConstructorChain cc = new ConstructorChain(); } } 

Produktion:

Hvad er constructor chaining i Java

I ovenstående eksempel har vi oprettet en instans af klassen uden at sende nogen parameter. Den kalder først standardkonstruktøren, og standardkonstruktøren omdirigerer kaldet til den parametriserede på grund af dette(). Udsagn inde i den parametriserede konstruktør udføres og vender tilbage til standardkonstruktøren. Derefter udføres resten af ​​sætningerne i standardkonstruktøren, og objektet initialiseres med succes. Følgende er konstruktørens kaldesekvens:

 ConstructorChain cc = new ConstructorChain(); -> ConstructorChain() -> ConstructorChain(String str) -> System.out.println() -> ConstructorChain() -> System.out.println() 

Ringer til Super Class Constructor

Nogle gange er vi nødt til at kalde superklassen (overordnet klasse) konstruktøren fra den underordnede klasse (afledt klasse), i sådanne tilfælde bruger vi nøgleordet super() i den afledte klasse konstruktør. Det er valgfrit at skrive super(), fordi JVM automatisk sætter det. Det skal altid skrives i første linje. Vi får en syntaksfejl, hvis vi forsøger at kalde en superklassekonstruktør i underklassen.

t ff

Syntaks:

 super(); or super(Parameter List); 

super(): Den kalder superklassens no-argument- eller standardkonstruktør.

java liste

super(parametre): Den påberåber sig superklassens parametriserede konstruktør.

Husk at superklassekonstruktøren ikke kan nedarves i underklassen. Det kan kaldes fra underklassekonstruktøren ved at bruge supernøgleordet.

Lad os skabe et Java-program og implementere konstruktørkæde i en nedarvet klasse.

ConstructorChaining.java

 //parent class or base class class Demo { //base class default constructor Demo() { this(80, 90); System.out.println('Base class default constructor called'); } //base class parameterized constructor Demo(int x, int y) { System.out.println('Base class parameterized constructor called'); } } //derived class or child class class Prototype extends Demo { //derived class default constructor Prototype() { this('Java', 'Python'); System.out.println('Derived class default constructor called'); } //derived class parameterized constructor Prototype(String str1, String str2) { super(); System.out.println('Derived class parameterized constructor called'); } } public class ConstructorChaining { //main method public static void main(String args[]) { //initializes the instance of example class Prototype my_example = new Prototype(); } } 

Produktion:

Hvad er constructor chaining i Java