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
- Den har samme navn som klassen
- 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