Overbelastning av konstruktører i Java: Hva er & Programeksempler

Innholdsfortegnelse:

Anonim

Hva er Constructor i Java?

CONSTRUCTOR er en spesiell metode som brukes til å initialisere et nylig opprettet objekt og kalles like etter at minnet er tildelt objektet. Den kan brukes til å initialisere objektene til ønskede verdier eller standardverdier på tidspunktet for oppretting av objektet. Det er ikke obligatorisk for koderen å skrive en konstruktør for en klasse.

Hvis ingen brukerdefinerte konstruktører er gitt for en klasse, initialiserer kompilatoren medlemsvariabler til standardverdiene.

  • numeriske datatyper er satt til 0
  • char datatyper er satt til null tegn ('\ 0')
  • referansevariabler er satt til null

I denne veiledningen vil du lære-

  • Regler for å lage en konstruktør
  • Konstruktøroverbelastning i Java
  • Konstruktorkjetting

Regler for å lage en Java Constructor

  1. Den har samme navn som klassen
  2. Det skal ikke returnere en verdi som ikke engang er ugyldig

Eksempel 1 : Lag din første konstruktør i Java

Trinn 1) Skriv inn følgende konstruktørprogram i Java editor.

class Demo{int value1;int value2;Demo(){value1 = 10;value2 = 20;System.out.println("Inside Constructor");}public void display(){System.out.println("Value1 === "+value1);System.out.println("Value2 === "+value2);}public static void main(String args[]){Demo d1 = new Demo();d1.display();}}

Trinn 2) Lagre, kjør og kompiler konstruktørprogrammet i Java og observer utdataene.

Produksjon:

Inside ConstructorValue1 === 10Value2 === 20

Konstruktøroverbelastning i Java

Java Constructor overbelastning er en teknikk der en klasse kan ha et hvilket som helst antall konstruktører som er forskjellige i parameterlisten. Kompilatoren skiller mellom disse konstruktørene ved å ta hensyn til antall parametere i listen og deres type.

Eksempler på gyldige konstruktører for klasse Konto er

Account(int a);Account (int a,int b);Account (String a,int b);

Eksempel 2 : Forstå Constructor Overloading i Java

Trinn 1) Skriv koden i redigeringsprogrammet.

class Demo{int value1;int value2;/*Demo(){value1 = 10;value2 = 20;System.out.println("Inside 1st Constructor");}*/Demo(int a){value1 = a;System.out.println("Inside 2nd Constructor");}Demo(int a,int b){value1 = a;value2 = b;System.out.println("Inside 3rd Constructor");}public void display(){System.out.println("Value1 === "+value1);System.out.println("Value2 === "+value2);}public static void main(String args[]){Demo d1 = new Demo();Demo d2 = new Demo(30);Demo d3 = new Demo(30,40);d1.display();d2.display();d3.display();}}

Trinn 2) Lagre, kompiler og kjør koden.

Trinn 3) Feil =?. Prøv og feilsøk feilen før du fortsetter til neste trinn med overbelastning av Java-konstruktør

Trinn 4) Hver klasse har en standardkonstruktør i Java. Standard overbelastet konstruktør Java for klasse Demo er Demo () . Hvis du ikke gir denne konstruktøren, lager kompilatoren den for deg og initialiserer variablene til standardverdier. Du kan velge å overstyre denne standardkonstruktøren og initialisere variablene til dine ønskede verdier som vist i eksempel 1.

Men hvis du spesifiserer en parametrisert konstruktør som Demo (int a), og vil bruke standardkonstruktøren Java Demo (), er det obligatorisk for deg å spesifisere det.

Med andre ord, hvis din overbelastningskonstruktør i Java blir overstyrt, og du vil bruke standardkonstruktøren Java, må den spesifiseres.

Trinn 5) Kommentarlinje # 4-8. Lagre, kompiler og kjør koden.

Konstruktorkjetting

Tenk på et scenario der en basisklasse utvides av et barn. Hver gang et objekt i barneklassen blir opprettet, påkalles konstruktøren i foreldreklassen først. Dette kalles Constructor chaining.

Eksempel 3: Å forstå konstruktorkjetting

Trinn 1) Kopier følgende kode til redigeringsprogrammet.

class Demo{int value1;int value2;Demo(){value1 = 1;value2 = 2;System.out.println("Inside 1st Parent Constructor");}Demo(int a){value1 = a;System.out.println("Inside 2nd Parent Constructor");}public void display(){System.out.println("Value1 === "+value1);System.out.println("Value2 === "+value2);}public static void main(String args[]){DemoChild d1 = new DemoChild();d1.display();}}class DemoChild extends Demo{int value3;int value4;DemoChild(){//super(5);value3 = 3;value4 = 4;System.out.println("Inside the Constructor of Child");}public void display(){System.out.println("Value1 === "+value1);System.out.println("Value2 === "+value2);System.out.println("Value1 === "+value3);System.out.println("Value2 === "+value4);}}

Trinn 2) Kjør koden. På grunn av konstruktorkjetting, når objektet til underklassen DemoChild blir opprettet, blir konstruktør Demo () av ​​overordnede klassen påkalt først og senere blir konstruktør DemoChild () av ​​barnet opprettet. Forventet utgang =

Inside 1st Parent ConstructorInside the Constructor of ChildValue1 === 1Value2 === 2Value1 === 3Value2 === 4

Trinn 3) Du kan observere konstruktøren til foreldreklassen Demo overstyres. Hva om du vil kalle den overstyrte konstruktøren Demo (int a) i stedet for standard konstruktør Demo () når barnet ditt blir opprettet?

I slike tilfeller kan du bruke nøkkelordet "super" for å kalle overstyrte konstruktører i overordnet klasse.

Syntaks: -

super();--or--super(parameter list);

Eksempel: Hvis konstruktøren din er som Demo (Strengnavn, int a) , vil du spesifisere super ("Java", 5) Hvis det brukes, må søkeordet super være den første linjen med kode i konstruktøren til barneklassen.

Trinn 4) Fjern kommentarlinje nr. 26 og kjør koden. Følg utdataene.

Produksjon:

Inside 2nd Parent ConstructorInside the Constructor of ChildValue1 === 5Value2 === 0Value1 === 3Value2 === 4