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
Pamatujte, že změna pořadí konstruktoru neovlivní výstup.
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.
- 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:
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:
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: