logo

Co je řetězení konstruktorů v Javě?

v Javě, řetězení konstruktorů je sekvence vyvolání konstruktéři při inicializaci objektu. Používá se, když chceme vyvolat několik konstruktorů, jeden po druhém pomocí pouze instance. V této části budeme diskutovat řetězení konstruktorů v Javě podrobně se správnými příklady. Pojďme se na to rychle podívat co je konstruktor v Javě.

Konstruktér

v Jáva , konstruktor je stejný jako metoda, ale jediný rozdíl je v tom, že konstruktor má stejný název jako název třídy. Používá se k vytvoření instance třídy. Volá se automaticky, když vytvoříme objekt třídy. Nemá žádný návratový typ. Pamatujte, že konstruktor nemůže být abstraktní , finále , synchronizované , a statický . Nemůžeme přepsat konstruktor.

V Javě existují dva typy konstruktorů:

  • Výchozí konstruktor (také známý jako konstruktor bez argumentů)
  • Parametrizovaný konstruktor

Řetězení konstruktorů

V řetězci konstruktorů je konstruktor volán z jiného konstruktoru ve stejné třídě, jako je tento proces známý řetězení konstruktorů. Vyskytuje se prostřednictvím dědičnosti. Když vytvoříme instanci odvozené třídy, jsou nejprve vyvolány všechny konstruktory zděděné třídy (základní třídy), poté je vyvolán konstruktor volající třídy (odvozená třída).

Zřetězení konstruktoru můžeme dosáhnout dvěma způsoby:

atoi c
    Ve stejné třídě:Pokud konstruktory patří do stejné třídy, použijeme tento Ze základní třídy:Pokud konstruktor patří do různých tříd (rodičovské a podřízené třídy), použijeme super klíčové slovo pro volání konstruktoru ze základní třídy.

Pamatujte, že změna pořadí konstruktoru neovlivní výstup.

Co je řetězení konstruktorů v Javě

Potřeba řetězení konstruktorů

Předpokládejme, že je třeba provést pět úkolů. Existují dva způsoby, jak tyto úlohy provést, buď implementovat všechny úlohy v jediném konstruktoru, nebo vytvořit samostatné úlohy v jediném konstruktoru.

Pomocí mechanismu řetězení konstruktorů můžeme implementovat více úloh v jednom konstruktoru. Takže kdykoli čelíme takovým typům problémů, měli bychom použít řetězení konstruktorů. Pomocí řetězení konstruktorů můžeme program učinit čitelnějším a srozumitelnějším.

Pravidla řetězení konstruktorů

  • Výraz, který používá tento klíčové slovo musí být první řádek konstruktoru.
  • Objednatv řetězení konstruktorů nezáleží.
  • Musí existovat alespoň jeden konstruktor, který nepoužívá tento

Volání konstruktoru tvoří jiný konstruktor

Volání konstruktoru lze provést dvěma způsoby:

    Pomocí tohoto klíčového slova ():Používá se, když chceme volat konstruktor aktuální třídy v rámci stejné třídy.Pomocí klíčového slova super():Používá se, když chceme volat konstruktor nadtřídy ze základní třídy.

Poznámka: Ve stejném konstruktorovém bloku nemůžeme současně použít this() a super().

Pojďme pochopit tyto dva pojmy prostřednictvím programů Java.

Příklady řetězení konstruktorů

Volání konstruktoru aktuální třídy

Používáme tento() klíčové slovo, pokud chceme volat konstruktor aktuální třídy v rámci stejné třídy. Použití this() je povinné, protože JVM nikdy to nedávejte automaticky jako super() klíčové slovo. Všimněte si, že this() musí být první řádek konstruktoru. Musí existovat alespoň jeden konstruktor bez toto () klíčové slovo .

java řetězec na char

Syntax:

 this(); or this(parameters list); 

Například:

 this(); this('Javatpoint'); 

Vytvořme Java program a zavoláme konstruktor aktuální třídy.

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ýstup:

Co je řetězení konstruktorů v Javě

Ve výše uvedeném příkladu jsme vytvořili instanci třídy bez předání jakéhokoli parametru. Nejprve zavolá výchozí konstruktor a výchozí konstruktor přesměruje volání na parametrizovaný z důvodu this(). Příkazy uvnitř parametrizovaného konstruktoru se provedou a vrátí se zpět do výchozího konstruktoru. Poté se provede zbytek příkazů ve výchozím konstruktoru a objekt se úspěšně inicializuje. Následuje volací sekvence konstruktoru:

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

Volání Super Class Constructor

Někdy potřebujeme zavolat konstruktor nadtřídy (nadřazená třída) z podřízené třídy (odvozené třídy), v takových případech použijeme klíčové slovo super() v konstruktoru odvozené třídy. Zápis super() je volitelný, protože ho JVM automaticky vloží. Mělo by to být vždy na prvním řádku. Pokud se pokusíme zavolat konstruktor nadtřídy v podřízené třídě, dostaneme chybu syntaxe.

mapa na stroji

Syntax:

 super(); or super(Parameter List); 

super(): Volá konstruktor bez argumentu nebo výchozího konstruktoru nadtřídy.

super(parametry): Vyvolá parametrizovaný konstruktor nadtřídy.

Pamatujte, že konstruktor nadtřídy nelze v podtřídě zdědit. Lze jej volat z konstruktoru podtřídy pomocí klíčového slova super.

Vytvořme program v Javě a implementujme řetězení konstruktorů ve zděděné třídě.

návrhové vzory v jazyce Java

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ýstup:

Co je řetězení konstruktorů v Javě