logo

Čo je reťazenie konštruktorov v jazyku Java?

v Jave reťazenie konštruktorov je postupnosť vyvolávania konštruktérov pri inicializácii objektu. Používa sa, keď chceme vyvolať niekoľko konštruktorov, jeden po druhom pomocou iba inštancie. V tejto časti budeme diskutovať reťazenie konštruktorov v Jave podrobne so správnymi príkladmi. Poďme sa rýchlo pozrieť čo je konštruktor v Jave.

Konštruktér

In Java , konštruktor je rovnaký ako metóda, ale jediný rozdiel je v tom, že konštruktor má rovnaký názov ako názov triedy. Používa sa na vytvorenie inštancie triedy. Volá sa automaticky, keď vytvoríme objekt triedy. Nemá návratový typ. Pamätajte, že konštruktor nemôže byť abstraktné , Konečný , synchronizované , a statické . Nemôžeme prepísať konštruktor.

V Jave existujú dva typy konštruktorov:

  • Predvolený konštruktor (známy aj ako konštruktor bez argumentov)
  • Parametrizovaný konštruktor

Reťazenie konštruktéra

V reťazci konštruktorov sa konštruktor volá z iného konštruktora v rovnakej triede, ako je tento proces známy reťazenie konštruktorov. Vyskytuje sa prostredníctvom dedenia. Keď vytvoríme inštanciu odvodenej triedy, najskôr sa vyvolajú všetky konštruktory zdedenej triedy (základná trieda), potom sa vyvolá konštruktor volajúcej triedy (odvodená trieda).

Reťazenie konštruktorov môžeme dosiahnuť dvoma spôsobmi:

algoritmus rýchleho triedenia
    V rámci rovnakej triedy:Ak konštruktory patria do rovnakej triedy, použijeme toto Zo základnej triedy:Ak konštruktor patrí do rôznych tried (nadradená a podradená trieda), použijeme Super kľúčové slovo na volanie konštruktora zo základnej triedy.

Pamätajte, že zmena poradia konštruktora neovplyvní výstup.

Čo je reťazenie konštruktorov v jazyku Java

Potreba reťazenia konštruktérov

Predpokladajme, že je potrebné vykonať päť úloh. Existujú dva spôsoby, ako vykonať tieto úlohy, buď implementovať všetky úlohy v jednom konštruktore alebo vytvoriť samostatné úlohy v jednom konštruktore.

Použitím mechanizmu reťazenia konštruktorov môžeme implementovať viacero úloh v jednom konštruktore. Takže vždy, keď čelíme takýmto typom problémov, mali by sme použiť reťazenie konštruktorov. Pomocou reťazenia konštruktorov môžeme urobiť program čitateľnejším a zrozumiteľnejším.

Pravidlá reťazenia konštruktérov

  • Výraz, ktorý používa toto kľúčové slovo musí byť prvým riadkom konštruktora.
  • objednaťpri reťazení konštruktorov nezáleží.
  • Musí existovať aspoň jeden konštruktor, ktorý nepoužíva toto

Volanie konštruktora z iného konštruktora

Volanie konštruktora je možné vykonať dvoma spôsobmi:

    Pomocou tohto kľúčového slova ():Používa sa, keď chceme zavolať konštruktor aktuálnej triedy v rámci rovnakej triedy.Pomocou kľúčového slova super():Používa sa, keď chceme volať konštruktor nadtriedy zo základnej triedy.

Poznámka: V tom istom bloku konštruktora nemôžeme súčasne použiť this() a super().

Poďme pochopiť tieto dva pojmy prostredníctvom programov Java.

Príklady reťazenia konštruktorov

Volanie konštruktora aktuálnej triedy

Používame toto () kľúčové slovo, ak chceme zavolať konštruktor aktuálnej triedy v rámci rovnakej triedy. Použitie tohto () je povinné, pretože JVM nikdy to nedávajte automaticky ako Super() kľúčové slovo. Všimnite si, že this() musí byť prvý riadok konštruktora. Musí existovať aspoň jeden konštruktor bez toto () kľúčové slovo .

Syntax:

regálových psov
 this(); or this(parameters list); 

Napríklad:

 this(); this('Javatpoint'); 

Vytvorme Java program a zavoláme konštruktor aktuálnej triedy.

latexová matrica

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

Výkon:

Čo je reťazenie konštruktorov v jazyku Java

Vo vyššie uvedenom príklade sme vytvorili inštanciu triedy bez odovzdania akéhokoľvek parametra. Najprv zavolá predvolený konštruktor a predvolený konštruktor presmeruje volanie na parametrizovaný konštruktor kvôli tomuto(). Príkazy vo vnútri parametrizovaného konštruktora sa vykonajú a vrátia sa späť do predvoleného konštruktora. Potom sa vykonajú ostatné príkazy v predvolenom konštruktore a objekt sa úspešne inicializuje. Nasleduje volacia sekvencia konštruktora:

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

Volám konštruktéra super triedy

Niekedy potrebujeme zavolať konštruktor nadtriedy (nadradená trieda) z podradenej triedy (odvodenej triedy), v takýchto prípadoch použijeme kľúčové slovo super() v konštruktore odvodenej triedy. Je voliteľné napísať super(), pretože JVM ho automaticky vloží. Vždy by to malo byť napísané v prvom riadku. Ak sa pokúsime zavolať konštruktor nadtriedy v podradenej triede, dostaneme chybu syntaxe.

Syntax:

 super(); or super(Parameter List); 

Super(): Volá bezargumentový alebo predvolený konštruktor nadtriedy.

nainštalovať maven

super(parametre): Vyvolá parametrizovaný konštruktor nadtriedy.

Pamätajte, že konštruktor nadtriedy nemožno zdediť v podtriede. Dá sa volať z konštruktora podtriedy pomocou kľúčového slova super.

Vytvorme Java program a implementujme reťazenie konštruktorov v zdedenej triede.

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

Výkon:

Čo je reťazenie konštruktorov v jazyku Java