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
Pamätajte, že zmena poradia konštruktora neovplyvní výstup.
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.
- 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:
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:
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: