CodeGym/Java-blogg/Tilfeldig/Konstruktørkjeding i Java
John Squirrels
Nivå
San Francisco

Konstruktørkjeding i Java

Publisert i gruppen

Hva er Constructor Chaining?

En konstruktør i Java er en spesifikk metode som brukes i objektoppretting av en klasse. Konstruktøren påkalles hver gang et objekt i klassen opprettes. Den kan brukes til å tilordne verdier til egenskapene til objektet ved opprettelsestidspunktet. Det kan være flere konstruktører i en Java-klasse med forskjellige parameterlister. Konstruktørkjeding brukes til å påkalle forskjellige implementeringer av konstruktører av samme klasse/overordnede klasse på tidspunktet for objektoppretting.

Hvordan er konstruktørkjeding implementert i Java?

Det er to måter å kjede konstruktører basert på hvordan man kaller konstruktøren. De er som følger.
  • ved å bruke dette() nøkkelordet – for å kalle konstruktører av samme klasse
  • bruke super() nøkkelord – for å kalle konstruktører av overordnet klasse
Dette er forklart i de følgende eksemplene.Konstruktørkjeding i Java - 1

Konstruktørkjedeeksempel #1 – Konstruktører lenkes ved å bruke dette() nøkkelordet

Vi har erklært fire konstruktører for DerivedClass. En uten argumenter og de tre andre med forskjellige argumenter. Inne i hver konstruktør brukes dette() nøkkelordet til å kalle neste konstruktør av samme klasse.
package com.tutorialwriting.constchaining;

public class DerivedClass{

    String firstName;
    String country;
    int age;

    public DerivedClass() {
        // calling one argument constructor
        this("Maggie");
    }

    public DerivedClass(String firstName) {
        // calling two argument constructor
        this(firstName, 15);
    }

    public DerivedClass(String firstName, int age) {
        // calling three argument constructor
        this(firstName, age, "Australia");
    }

    public DerivedClass(String firstName, int age, String country) {
        this.firstName = firstName;
        this.age = age;
        this.country = country;
    }

    void displayValues() {
        System.out.println("First Name : " + firstName);
        System.out.println("Country : " + country);
        System.out.println("Age : " + age);
    }

    public static void main(String args[]) {
        DerivedClass object = new DerivedClass();
        object.displayValues();
    }
}
Utgangen av utførelsenKonstruktørkjeding i Java - 2

Konstruktørkjedeeksempel #2 – Konstruktører lenkes ved hjelp av nøkkelordet super().

Her kaller barneklassen konstruktørene til den overordnede klassen ved å bruke nøkkelordet super() . BaseClass har tre konstruktører. Konstruktøren uten argumenter kaller en av de tre-argument-konstruktørene til BaseClass ved å bruke denne() .
package com.tutorialwriting.constchaining;

public class BaseClass {

    public BaseClass() {
        //calling a three argument constructor of the same class
        this("Male", "English", "1989/11/10");
        System.out.println("I'm executed third!!!");
    }

    public BaseClass(String firstName, String surname, int idNo) {
        System.out.println("I'm executed first!");
        System.out.println("First name : " + firstName);
        System.out.println("Surname : " + surname);
        System.out.println("ID Number : " + idNo);
    }

    public BaseClass(String gender, String nationality, String birthDate) {
        System.out.println("I'm executed second!!");
        System.out.println("Gender : " + gender);
        System.out.println("Nationality : " + nationality);
        System.out.println("Birth Date : " + birthDate);
    }

}
DerivedClass har to konstruktører som hver kaller de forskjellige konstruktørene i superklassen ved å bruke super() .
package com.tutorialwriting.constchaining;

public class DerivedClass extends BaseClass {

    public DerivedClass() {
        //calling no argument constructor of the super class
        super();
    }

    public DerivedClass(String firstName, String surname, int idNo) {
        //calling three argument constructor of the super class
        super(firstName, surname, idNo);
    }

    public static void main(String args[]) {
        DerivedClass object2 = new DerivedClass("Paul", "Wilson", 123456);
        DerivedClass object1 = new DerivedClass();
    }
}
Utgangen av utførelsenKonstruktørkjeding i Java - 3

Implisitt vs. eksplisitt konstruktørkall

Java har to forskjellige måter å kalle konstruktører: Implisitt kall og Eksplisitt kall.
  • Eksplisitt kall refererer til å kalle konstruktører eksplisitt i koden ved å bruke this() eller super() .
  • Implisitt kall refererer til kallet av no-argument-konstruktøren til superklassen implisitt ved fravær av et slikt eksplisitt kall fra barneklassekonstruktøren. Med andre ord, kompilatoren legger til super() -kallet som den første linjen i noen av konstruktørene til barneklassene hvis programmereren eksplisitt ikke kaller super() i koden.

Hvorfor trenger vi konstruktørkjeding?

Det er flere forskjellige formål med å ha en konstruktørkjede i Java, som listet nedenfor.
  • Det er en måte å få tilgang til egenskapene til andre konstruktører eller egenskaper til overordnede klasser.
  • Mens du kaller andre konstruktører, brukes bare ett objekt, som er den gjeldende forekomsten av klassen. Initialiseringen skjer på ett sted, men vi har privilegiet å kalle forskjellige konstruktørimplementeringer gjennom en kjede. Dette hjelper mye med minneadministrasjon og kodevedlikehold.

Konklusjon

I denne opplæringen diskuterte vi konstruktørkjeding i Java. Konstruktører er metodelignende kodesegmenter som påkalles mens de oppretter objekter. En Java-klasse kan ha et hvilket som helst antall konstruktører med forskjellige parameterlister. Konstruktørkjeding er en praktisk måte å håndtere forskjellige initialiseringer med én forekomst av en klasse. Noen viktige punkter å merke seg fra denne opplæringen er listet opp nedenfor.
  • Hvis programmereren ikke legger det eksplisitt til koden, legger kompilatoren til en offentlig konstruktør uten argumenter til Java-klassen. Dette kalles standardkonstruktøren.
  • this() og super() skal skrives som den første linjen i konstruktøren.
  • this() brukes til å kalle konstruktører av samme klasse mens super() brukes til å kalle konstruktører av den umiddelbare superklassen.
  • Det bør være minst én konstruktør i klassen som ikke inneholder dette() nøkkelordet.
  • Hvis det ikke er lagt til eksplisitt, legger kompilatoren til et no-argument super() -kall til hver underordnede klassekonstruktør. Dette vil hjelpe instansieringen av klasser riktig.
Kommentarer
  • Populær
  • Ny
  • Gammel
Du må være pålogget for å legge igjen en kommentar
Denne siden har ingen kommentarer ennå