Java nyelven, konstruktor láncolás egy meghívás sorozata kivitelezők egy objektum inicializálásakor. Akkor használatos, ha több konstruktort akarunk meghívni, egymás után, csak egy példány használatával. Ebben a részben megvitatjuk konstruktor láncolás Java-ban részletesen megfelelő példákkal. Nézzük meg gyorsan mi az a konstruktor a Java nyelven.
Konstruktőr
Ban ben Jáva , a konstruktor ugyanaz, mint egy metódus, de az egyetlen különbség az, hogy a konstruktor neve megegyezik az osztálynévvel. Az osztály példányának létrehozására szolgál. Ez automatikusan meghívásra kerül, amikor létrehozunk egy objektumot az osztályból. Nincs visszatérési típusa. Ne feledje, hogy konstruktor nem lehet absztrakt , végső , szinkronizálva , és statikus . Nem írhatunk felül egy konstruktort.
A Java-ban kétféle konstruktor létezik:
- Alapértelmezett konstruktor (argumentum nélküli konstruktorként is ismert)
- Paraméterezett konstruktor
Konstruktor láncolás
A konstruktorláncban egy konstruktort egy másik konstruktortól hívnak meg ugyanabban az osztályban, mint ez a folyamat konstruktor láncolás. Ez öröklődés útján történik. Amikor létrehozunk egy származtatott osztály példányát, először az örökölt osztály (alaposztály) összes konstruktora, majd a hívó osztály (származott osztály) konstruktora.
A konstruktőri láncolást kétféleképpen érhetjük el:
havonta hány hét
Ne feledje, hogy a konstruktor sorrendjének megváltoztatása nincs hatással a kimenetre.
A kivitelezői láncolás szükségessége
Tegyük fel, hogy öt feladatot kell végrehajtani. Ezeket a feladatokat kétféleképpen hajthatja végre: vagy az összes feladatot egyetlen konstruktorban hajthatja végre, vagy különálló feladatokat hozhat létre egyetlen konstruktorban.
A konstruktor láncolási mechanizmus használatával több feladatot is megvalósíthatunk egyetlen konstruktorban. Tehát amikor ilyen típusú problémákkal szembesülünk, használjunk konstruktor láncolást. A konstruktor láncolással olvashatóbbá, érthetőbbé tehetjük a programot.
A kivitelezői láncolás szabályai
- Egy kifejezés, amely használ ez kulcsszónak a konstruktor első sorának kell lennie.
- Léteznie kell legalább egy olyan konstruktornak, amely nem használja ez
Konstruktor hívása egy másik konstruktorból
A konstruktor meghívása kétféleképpen történhet:
Megjegyzés: Ugyanabban a konstruktor blokkban nem használhatjuk egyszerre ezt () és super()-t.
Értsük meg ezt a két fogalmat Java programokon keresztül.
Példák a konstruktorok láncolására
A Current Class Constructor hívása
Használjuk ez() kulcsszó, ha az aktuális osztálykonstruktort szeretnénk meghívni ugyanazon az osztályon belül. A this() használata kötelező, mert JVM soha ne tegye automatikusan úgy, mint a szuper() kulcsszó. Ne feledje, hogy ez() legyen a konstruktor első sora. Legalább egy konstruktornak léteznie kell anélkül ez() kulcsszó .
Szintaxis:
tavaszi és tavaszi mvc
this(); or this(parameters list);
Például:
this(); this('Javatpoint');
Hozzunk létre egy Java programot, és hívjuk meg az aktuális osztálykonstruktort.
java karakterlánc a karakterhez
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(); } }
Kimenet:
A fenti példában az osztály egy példányát hoztuk létre anélkül, hogy paramétert adtunk volna át. Először meghívja az alapértelmezett konstruktort, és az alapértelmezett konstruktor átirányítja a hívást a paraméterezettre, mert ez(). A paraméterezett konstruktoron belüli utasítások végrehajtásra kerülnek, és visszatérnek az alapértelmezett konstruktorhoz. Ezt követően az alapértelmezett konstruktor többi utasítása végrehajtásra kerül, és az objektum sikeresen inicializálódik. A következő a konstruktor hívási sorrendje:
ConstructorChain cc = new ConstructorChain(); -> ConstructorChain() -> ConstructorChain(String str) -> System.out.println() -> ConstructorChain() -> System.out.println()
Super Class Constructor hívása
Néha meg kell hívnunk a szuperosztály (szülőosztály) konstruktort a gyermekosztályból (származott osztály), ilyenkor a super() kulcsszót használjuk a származtatott osztálykonstruktorban. A super() írása nem kötelező, mert a JVM automatikusan berakja. Mindig az első sorba kell írni. Szintaktikai hibát kapunk, ha megpróbálunk meghívni egy szuperosztály-konstruktort a gyermekosztályban.
Szintaxis:
super(); or super(Parameter List);
szuper(): Meghívja a szuperosztály argumentummentes vagy alapértelmezett konstruktorát.
mysql mutassa meg az összes felhasználót
szuper(paraméterek): Meghívja a szuperosztály paraméterezett konstruktort.
Ne feledje, hogy a szuperosztály-konstruktor nem örökölhető az alosztályban. Meghívható az alosztály konstruktorából a szuper kulcsszó használatával.
Hozzunk létre egy Java programot, és valósítsuk meg a konstruktor láncolást egy örökölt osztályban.
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(); } }
Kimenet: