Konstruktoriaus perkrova „Java“: kas yra & Programos pavyzdžiai

Turinys:

Anonim

Kas yra „Java“ konstruktorius?

KONSTRUKTORIUS yra specialus metodas, naudojamas inicijuojant naujai sukurtą objektą ir iškviečiamas iškart, kai objektui yra skirta atmintis. Jį galima naudoti norint inicijuoti objektus iki norimų arba numatytųjų reikšmių objekto sukūrimo metu. Koduotojui neprivaloma rašyti klasės konstruktoriaus.

Jei klasei nepateikiamas vartotojo apibrėžtas konstruktorius, kompiliatorius inicijuoja narių kintamuosius iki numatytųjų reikšmių.

  • skaitmeniniai duomenų tipai nustatyti į 0
  • char duomenų tipai nustatomi į nulinį simbolį ('\ 0')
  • pamatiniai kintamieji yra nuliniai

Šioje pamokoje sužinosite

  • Konstruktoriaus kūrimo taisyklės
  • Konstruktoriaus perkrova „Java“
  • Konstruktoriaus grandinės

„Java Constructor“ kūrimo taisyklės

  1. Jis turi tą patį pavadinimą kaip ir klasė
  2. Tai neturėtų grąžinti net niekinės vertės

1 pavyzdys : sukurkite savo pirmąjį konstruktorių „Java“

1 žingsnis. Įveskite šią konstruktoriaus programą į „Java“ redaktorių.

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

2 žingsnis) Išsaugokite, paleiskite ir sudarykite „Java“ konstruktoriaus programą ir stebėkite išvestį.

Išvestis:

Inside ConstructorValue1 === 10Value2 === 20

Konstruktoriaus perkrova „Java“

„Java Constructor“ perkrova yra technika, pagal kurią klasėje gali būti bet koks skaičius konstruktorių, kurie skiriasi parametrų sąrašu. Kompiliatorius išskiria šiuos konstruktorius atsižvelgdamas į parametrų skaičių sąraše ir jų tipą.

Galiojančių „Account“ klasės konstruktorių pavyzdžiai yra

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

2 pavyzdys : Suprasti konstruktoriaus perkrovą „Java“

1 žingsnis. Įveskite kodą redaktoriuje.

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

2 žingsnis) Išsaugokite, kompiliuokite ir paleiskite kodą.

3 žingsnis) Klaida =?. Prieš tęsdami kitą „Java“ konstruktoriaus perkrovos veiksmą, pabandykite derinti klaidą

4 žingsnis) Kiekvienoje klasėje yra numatytasis „Java“ konstruktorius. Numatytasis perkrautas konstruktorius „Java“ klasės demonstracijai yra „ Demo“ () . Jei nepateikiate šio konstruktoriaus, kompiliatorius jį sukuria jums ir inicijuoja kintamuosius pagal numatytąsias reikšmes. Galite pasirinkti nepaisyti šio numatytojo konstruktoriaus ir inicijuoti kintamuosius iki norimų verčių, kaip parodyta 1 pavyzdyje.

Bet jei nurodote parametruojamą konstruktorių, pvz., „Demo“ (int a), ir norite naudoti numatytąjį konstruktorių „Java Demo“ (), privalote jį nurodyti.

Kitaip tariant, jei jūsų perkrovos konstruktorius „Java“ yra nepaisomas ir norite naudoti numatytąjį konstruktorių „Java“, reikia nurodyti jo.

5 žingsnis) Komentavimo eilutė Nr. 4-8. Išsaugokite, kompiliuokite ir paleiskite kodą.

Konstruktoriaus grandinės

Apsvarstykite scenarijų, kai pagrindinę klasę pratęs vaikas. Kai tik kuriamas vaikų klasės objektas, pirmiausia iškviečiamas tėvų klasės konstruktorius. Tai vadinama konstruktoriaus grandine.

3 pavyzdys: Suprasti konstruktoriaus grandinę

1 žingsnis. Nukopijuokite šį kodą į redaktorių.

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 žingsnis) Paleiskite kodą. Dėl konstruktoriaus grandinės sukūrus vaikų klasės „DemoChild“ objektą, pirmiausia iškviečiamas tėvų klasės konstruktorius „Demo“ (), o vėliau sukuriamas vaiko konstruktorius „DemoChild“ (). Laukiama produkcija =

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

3 žingsnis. Galite pastebėti, kad tėvų klasės konstruktorius yra nepaisomas. Ką daryti, jei norite sukurti nepaisomą konstruktorių Demo (int a), o ne numatytąjį konstruktorių Demo (), kai kuriamas jūsų vaiko objektas?

Tokiais atvejais galite naudoti raktinį žodį „super“, kad paskambintumėte nepaisomiems tėvų klasės konstruktoriams.

Sintaksė: -

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

Pavyzdys: Jei jūsų konstruktorius yra panašus į demonstracinę versiją (String Name, int a) , nurodysite super („Java“, 5) Jei naudojamas, raktinis žodis super turi būti pirmoji kodo eilutė vaikų klasės konstruktoriuje.

4 žingsnis. Nekomentuokite 26 eilutės ir paleiskite kodą. Stebėkite išvestį.

Išvestis:

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