logo

Hva er konstruktørkjeding i Java?

I Java, konstruktørkjeding er en sekvens av påkalling konstruktører ved initialisering av et objekt. Den brukes når vi ønsker å påkalle en rekke konstruktører, etter hverandre ved å bruke bare en instans. I denne delen vil vi diskutere konstruktørkjeding i Java i detalj med riktige eksempler. La oss ta en rask titt hva er en konstruktør i Java.

Konstruktør

I Java , er en konstruktør det samme som en metode, men den eneste forskjellen er at konstruktøren har samme navn som klassenavnet. Den brukes til å lage en forekomst av klassen. Det kalles automatisk når vi lager et objekt i klassen. Den har ingen returtype. Husk at en konstruktør ikke kan være det abstrakt , endelig , synkronisert , og statisk . Vi kan ikke overstyre en konstruktør.

Det er to typer konstruktører i Java:

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

Konstruktørkjetting

I konstruktørkjeden kalles en konstruktør fra en annen konstruktør i samme klasse som denne prosessen er kjent som konstruktørkjeding. Det skjer gjennom arv. Når vi oppretter en forekomst av en avledet klasse, startes først alle konstruktørene til den nedarvede klassen (baseklassen), etter at konstruktøren til den kallende klassen (avledet klasse) startes.

Vi kan oppnå konstruktørkjeding på to måter:

hva er obj i java
    Innenfor samme klasse:Hvis konstruktørene tilhører samme klasse, bruker vi dette Fra basisklassen:Hvis konstruktøren tilhører forskjellige klasser (foreldre- og barneklasser), bruker vi super nøkkelord for å kalle konstruktøren fra basisklassen.

Husk at endring av rekkefølgen til konstruktøren ikke påvirker utdataene.

Hva er konstruktørkjeding i Java

Behovet for konstruktørkjetting

Anta at det er fem oppgaver å utføre. Det er to måter å utføre disse oppgavene på, enten implementere alle oppgavene i en enkelt konstruktør eller opprette separate oppgaver i en enkelt konstruktør.

Ved å bruke konstruktørkjedemekanismen kan vi implementere flere oppgaver i en enkelt konstruktør. Så når vi møter slike typer problemer, bør vi bruke konstruktørkjeding. Vi kan gjøre programmet mer lesbart og forståelig ved å bruke konstruktørkjeding.

koble til database java

Regler for konstruktørkjeding

  • Et uttrykk som bruker dette nøkkelordet må være den første linjen i konstruktøren.
  • Rekkefølgespiller ingen rolle i konstruktørkjeding.
  • Det må eksistere minst én konstruktør som ikke bruker dette

Konstruktør Ringer fra en annen konstruktør

Anropet av konstruktøren kan gjøres på to måter:

    Ved å bruke dette() nøkkelordet:Den brukes når vi ønsker å kalle gjeldende klassekonstruktør innenfor samme klasse.Ved å bruke super() nøkkelord:Den brukes når vi vil kalle superklassekonstruktøren fra basisklassen.

Merk: I samme konstruktørblokk kan vi ikke bruke denne() og super() samtidig.

La oss forstå disse to konseptene gjennom Java-programmer.

Eksempler på kjetting av konstruktører

Ringer nåværende klassekonstruktør

Vi bruker dette() nøkkelord hvis vi ønsker å kalle gjeldende klassekonstruktør innenfor samme klasse. Bruken av denne() er obligatorisk fordi JVM aldri sette det automatisk som super() søkeord. Merk at denne() må være den første linjen i konstruktøren. Det må eksistere minst én konstruktør uten dette() nøkkelordet .

Syntaks:

 this(); or this(parameters list); 

For eksempel:

 this(); this('Javatpoint'); 

La oss lage et Java-program og kalle den gjeldende klassekonstruktøren.

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

Produksjon:

Hva er konstruktørkjeding i Java

I eksemplet ovenfor har vi opprettet en forekomst av klassen uten å sende noen parameter. Den kaller først standardkonstruktøren og standardkonstruktøren omdirigerer kallet til den parameteriserte på grunn av dette(). Utsagnene i den parameteriserte konstruktøren utføres og går tilbake til standardkonstruktøren. Deretter kjøres resten av setningene i standardkonstruktøren og objektet initialiseres vellykket. Følgende er anropssekvensen til konstruktøren:

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

Ringer Super Class Constructor

Noen ganger må vi kalle konstruktøren for superklassen (overordnet klasse) fra barneklassen (avledet klasse) i slike tilfeller bruker vi nøkkelordet super() i den avledede klassekonstruktøren. Det er valgfritt å skrive super() fordi JVM automatisk setter det. Det skal alltid skrives på første linje. Vi får en syntaksfeil hvis vi prøver å kalle en superklassekonstruktør i barneklassen.

datamaskin oppfunnet år

Syntaks:

 super(); or super(Parameter List); 

super(): Den kaller no-argument- eller standardkonstruktøren til superklassen.

java swing

super(parametere): Den påkaller superklassens parameteriserte konstruktør.

Husk at superklassekonstruktøren ikke kan arves i underklassen. Det kan kalles fra underklassekonstruktøren ved å bruke supernøkkelordet.

La oss lage et Java-program og implementere konstruktørkjeding i en arvet 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(); } } 

Produksjon:

Hva er konstruktørkjeding i Java