logo

Kas yra „Java“ konstruktorių grandinė?

Java, konstruktorių grandinės yra iškvietimo seka konstruktoriai inicijuojant objektą. Jis naudojamas, kai norime iškviesti daugybę konstruktorių, vieną po kito naudodami tik egzempliorių. Šiame skyriuje aptarsime konstruktorių grandinės sukūrimas Java išsamiai su tinkamais pavyzdžiais. Greitai pažiūrėkime kas yra konstruktorius Java.

Konstruktorius

Į Java , konstruktorius yra tas pats kaip metodas, tačiau vienintelis skirtumas yra tas, kad konstruktoriaus pavadinimas yra toks pat kaip ir klasės pavadinimas. Jis naudojamas klasės egzemplioriui sukurti. Jis iškviečiamas automatiškai, kai sukuriame klasės objektą. Jis neturi grąžinimo tipo. Atminkite, kad konstruktorius negali būti abstrakčiai , galutinis , sinchronizuoti , ir statinis . Negalime nepaisyti konstruktoriaus.

„Java“ yra dviejų tipų konstruktoriai:

  • Numatytasis konstruktorius (taip pat žinomas kaip beargumentinis konstruktorius)
  • Parametrizuotas konstruktorius

Konstruktoriaus grandinės

Konstruktorių grandinėje konstruktorius iškviečiamas iš kito konstruktoriaus toje pačioje klasėje, kaip šis procesas žinomas konstruktorių grandinės. Tai atsiranda paveldėjimo būdu. Kai sukuriame išvestinės klasės egzempliorių, pirmiausia iškviečiami visi paveldėtos klasės (bazinės klasės) konstruktoriai, o po to – iškviečiamos klasės (išvestinės klasės) konstruktorius.

Konstruktoriaus grandinę galime pasiekti dviem būdais:

vandens ženklas žodyje
    Toje pačioje klasėje:Jei konstruktoriai priklauso tai pačiai klasei, naudojame tai Iš bazinės klasės:Jei konstruktorius priklauso skirtingoms klasėms (tėvų ir vaikų klasėms), naudojame super raktinis žodis, skirtas iškviesti konstruktorių iš bazinės klasės.

Atminkite, kad konstruktoriaus tvarkos pakeitimas išvesties neturi įtakos.

Kas yra „Java“ konstruktorių grandinė

Konstruktorių grandinės poreikis

Tarkime, reikia atlikti penkias užduotis. Yra du būdai atlikti šias užduotis: arba įgyvendinti visas užduotis viename konstruktoriuje, arba sukurti atskiras užduotis viename konstruktoriuje.

Naudodami konstruktorių grandinės mechanizmą, galime įgyvendinti kelias užduotis viename konstruktoriuje. Taigi, kai susiduriame su tokio tipo problemomis, turėtume naudoti konstruktorių grandinę. Programą galime padaryti skaitomesnę ir suprantamesnę, naudodami konstruktorių grandinę.

np.unikali

Konstruktorių grandinės taisyklės

  • Išraiška, kuri naudoja tai raktinis žodis turi būti pirmoji konstruktoriaus eilutė.
  • Įsakymaskonstruktorių grandinėje nesvarbu.
  • Turi egzistuoti bent vienas konstruktorius, kuris nenaudoja tai

Konstruktoriaus iškvietimas iš kito Konstruktoriaus

Konstruktorių iškviesti galima dviem būdais:

    Naudodami šį() raktinį žodį:Jis naudojamas, kai norime iškviesti esamą klasės konstruktorių toje pačioje klasėje.Naudodami super() raktinį žodį:Jis naudojamas, kai norime iškviesti superklasės konstruktorių iš pagrindinės klasės.

Pastaba: tame pačiame konstruktoriaus bloke negalime vienu metu naudoti šio() ir super().

Supraskime šias dvi sąvokas per „Java“ programas.

Konstruktoriaus grandinės pavyzdžiai

Skambinama dabartinės klasės konstruktoriui

Mes naudojame tai () raktinį žodį, jei norime iškviesti esamą klasės konstruktorių toje pačioje klasėje. Naudoti this() yra privaloma, nes JVM niekada nedėkite jo automatiškai kaip super () raktažodį. Atminkite, kad tai () turi būti pirmoji konstruktoriaus eilutė. Turi būti bent vienas konstruktorius be šį() raktinį žodį .

Sintaksė:

 this(); or this(parameters list); 

Pavyzdžiui:

 this(); this('Javatpoint'); 

Sukurkime Java programą ir iškvieskime esamą klasės konstruktorių.

ConstructorChain.java

 public class ConstructorChain { //default constructor ConstructorChain() { this('Javatpoint'); System.out.println('Default constructor called.'); } //parameterized constructor ConstructorChain(String str) { System.out.println('Parameterized constructor called'); } //main method public static void main(String args[]) { //initializes the instance of example class ConstructorChain cc = new ConstructorChain(); } } 

Išvestis:

Kas yra „Java“ konstruktorių grandinė

Aukščiau pateiktame pavyzdyje sukūrėme klasės egzempliorių neperduodami jokio parametro. Pirmiausia jis iškviečia numatytąjį konstruktorių, o numatytasis konstruktorius nukreipia iškvietimą į parametrizuotą dėl to (). Teiginiai parametruoto konstruktoriaus viduje yra vykdomi ir grįžta į numatytąjį konstruktorių. Po to likusieji numatytojo konstruktoriaus teiginiai vykdomi ir objektas sėkmingai inicijuojamas. Toliau pateikiama konstruktoriaus iškvietimo seka:

 ConstructorChain cc = new ConstructorChain(); -> ConstructorChain() -> ConstructorChain(String str) -> System.out.println() -> ConstructorChain() -> System.out.println() 

Skambiname super klasės konstruktoriui

Kartais tokiais atvejais turime iškviesti superclass (parent class) konstruktorių iš antrinės klasės (išvestinės klasės), išvestinėje klasės konstruktoriuje naudojame raktinį žodį super(). Neprivaloma rašyti super(), nes JVM jį įdeda automatiškai. Jis visada turi būti rašomas pirmoje eilutėje. Mes gauname sintaksės klaidą, jei bandome iškviesti superklasės konstruktorių antrinėje klasėje.

aktorius ranbir kapoor amžiaus

Sintaksė:

 super(); or super(Parameter List); 

super(): Jis vadina beargumentinį arba numatytąjį superklasės konstruktorių.

Parsisiųsti youtube vaizdo įrašą su vlc

super (parametrai): Jis iškviečia superklasės parametrinį konstruktorių.

Atminkite, kad superklasės konstruktorius poklasyje negali būti paveldėtas. Jį galima iškviesti iš poklasio konstruktoriaus, naudojant super raktinį žodį.

Sukurkime Java programą ir įgyvendinkime konstruktorių grandinę paveldėtoje klasėje.

ConstructorChaining.java

 //parent class or base class class Demo { //base class default constructor Demo() { this(80, 90); System.out.println('Base class default constructor called'); } //base class parameterized constructor Demo(int x, int y) { System.out.println('Base class parameterized constructor called'); } } //derived class or child class class Prototype extends Demo { //derived class default constructor Prototype() { this('Java', 'Python'); System.out.println('Derived class default constructor called'); } //derived class parameterized constructor Prototype(String str1, String str2) { super(); System.out.println('Derived class parameterized constructor called'); } } public class ConstructorChaining { //main method public static void main(String args[]) { //initializes the instance of example class Prototype my_example = new Prototype(); } } 

Išvestis:

Kas yra „Java“ konstruktorių grandinė