logo

Mi az a konstruktorláncolás a Java-ban?

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
    Ugyanazon az osztályon belül:Ha a konstruktorok ugyanabba az osztályba tartoznak, akkor használjuk ez Az alaposztályból:Ha a konstruktor különböző osztályokhoz (szülő és gyermek osztályok) tartozik, akkor a szuper kulcsszó a konstruktor alaposztályból való meghívásához.

Ne feledje, hogy a konstruktor sorrendjének megváltoztatása nincs hatással a kimenetre.

Mi az a konstruktorláncolás a Java-ban

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.
  • Rendelésnem számít a konstruktor láncolásnál.
  • 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:

    A(z) kulcsszó használatával:Akkor használjuk, ha az aktuális osztálykonstruktort szeretnénk meghívni ugyanazon az osztályon belül.A szuper() kulcsszó használatával:Akkor használjuk, ha az alaposztályból szeretnénk meghívni a szuperosztály konstruktorát.

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:

Mi az a konstruktorláncolás a Java-ban

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:

Mi az a konstruktorláncolás a Java-ban