Konstruktori ülekoormus Java-s: mis on & Programmi näited

Mis on Java konstruktor?

CONSTRUCTOR on spetsiaalne meetod, mida kasutatakse äsja loodud objekti initsialiseerimiseks ja mida kutsutakse kohe pärast objekti jaoks mälu eraldamist. Seda saab kasutada objektide lähtestamiseks soovitud või vaikeväärtusteks objekti loomise ajal. Koodril ei ole kohustuslik kirjutada klassi konstruktorit.

Kui klassi jaoks pole ette nähtud kasutaja määratletud konstruktorit, lähtestab kompilaator liikmete muutujate vaikeväärtused.

  • numbriliste andmetüüpide väärtuseks määratakse 0
  • char andmetüüpideks määratakse nullmärk ('\ 0')
  • võrdlusmuutujate väärtuseks määratakse null

Selles õpetuses saate teada

  • Konstruktori loomise reeglid
  • Konstruktori ülekoormus Java-s
  • Konstruktori ketid

Java konstruktori loomise reeglid

  1. Sellel on sama nimi kui klassil
  2. See ei peaks tagastama väärtust, mis pole isegi tühine

Näide 1 : looge Java-s esimene konstruktor

Samm 1) Sisestage Java-redaktorisse järgmine konstruktoriprogramm.

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

Samm 2) Salvestage, käivitage ja kompileerige Java-s olev konstruktoriprogramm ja jälgige väljundit.

Väljund:

Inside ConstructorValue1 === 10Value2 === 20

Konstruktori ülekoormus Java-s

Java Constructor'i ülekoormamine on tehnika, mille puhul klassil võib olla mis tahes arv konstruktoreid, mis erinevad parameetrite loendis. Koostaja eristab neid konstruktoreid, võttes arvesse loendis olevate parameetrite arvu ja nende tüüpi.

Klassikonto kehtivate konstruktorite näited on

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

Näide 2 : Java konstruktori ülekoormamise mõistmine

1. samm. Sisestage kood redaktorisse.

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

Samm 2) Salvestage, kompileerige ja käivitage kood.

Samm 3) Viga =?. Proovige viga siluda, enne kui jätkate Java-konstruktori ülekoormamise järgmise sammuga

Samm 4) Igal klassil on Java vaikekonstruktor. Klassis Demo on ülekoormatud konstruktori Java vaikimisi Demo () . Kui te ei paku seda konstruktorit, loob kompilaator selle teile ja lähtestab muutujad vaikeväärtusteks. Võite selle vaikekonstruktori tühistada ja lähtestada muutujad soovitud väärtusteni, nagu näites 1 näidatud.

Kuid kui määrate parameetriseeritud konstruktori nagu Demo (int a) ja soovite kasutada vaikekonstruktorit Java Demo (), on see teil kohustuslik.

Teisisõnu, kui teie Java-s ülekoormatud konstruktor tühistatakse ja soovite kasutada vaikekonstruktorit Java, tuleb see täpsustada.

5. samm. Kommenteerimata rida nr 4-8. Koodi salvestamine, kompileerimine ja käivitamine.

Konstruktori ketid

Mõelge stsenaariumile, kus laps laiendab baasklassi. Alati, kui lasteklassi objekt luuakse, kutsutakse kõigepealt vanemateklassi konstruktorit. Seda nimetatakse Konstruktori aheldamiseks.

Näide 3: Konstruktorite aheldamise mõistmiseks

Samm 1) Kopeerige redaktorisse järgmine kood.

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

2. samm. Käivitage kood. Konstruktorite aheldamise tõttu kutsutakse lapseklassi DemoChild objekti loomisel kõigepealt üles vanema klassi konstruktor Demo () ja hiljem luuakse lapse konstruktor DemoChild (). Eeldatav väljund =

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

Samm 3) Võite jälgida, et vanema klassi konstruktor Demo on alistatud. Mis juhtub, kui soovite oma alaobjekti loomisel helistada alamkonstruktorile vaikekonstruktori Demo (int a) asemel?

Sellistel juhtudel saate kasutada vanemateklassi alistatud konstruktoritele helistamiseks märksõna "super" .

Süntaks: -

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

Näide: Kui teie konstruktor on nagu Demo (stringi nimi, int a) , määrate super ("Java", 5) Kui seda kasutatakse, peab märksõna super olema lapseklassi konstruktori esimene koodirida .

4. samm. Kommenteerige rida nr 26 ja käivitage kood. Jälgige väljundit.

Väljund:

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

Huvitavad Artiklid...