logo

Što je ulančavanje konstruktora u Javi?

U Javi, ulančavanje konstruktora je niz zazivanja konstruktori nakon inicijalizacije objekta. Koristi se kada želimo pozvati više konstruktora, jedan za drugim koristeći samo instancu. U ovom odjeljku ćemo raspravljati ulančavanje konstruktora u Javi detaljno s odgovarajućim primjerima. Pogledajmo na brzinu što je konstruktor u Javi.

Konstruktor

U Java , konstruktor je isto što i metoda, ali jedina razlika je u tome što konstruktor ima isto ime kao i naziv klase. Koristi se za stvaranje instance klase. Poziva se automatski kada kreiramo objekt klase. Nema povratnu vrstu. Zapamtite da konstruktor ne može biti sažetak , konačni , sinkronizirano , i statički . Ne možemo nadjačati konstruktor.

U Javi postoje dvije vrste konstruktora:

  • Zadani konstruktor (poznat i kao konstruktor bez argumenata)
  • Parametrirani konstruktor

Ulančavanje konstruktora

U lancu konstruktora, konstruktor se poziva iz drugog konstruktora u istoj klasi pod kojom je ovaj proces poznat ulančavanje konstruktora. Javlja se nasljeđem. Kada kreiramo instancu izvedene klase, prvo se pozivaju svi konstruktori naslijeđene klase (bazne klase), a nakon toga se poziva konstruktor pozivajuće klase (izvedene klase).

Ulančavanje konstruktora možemo postići na dva načina:

što je grupiranje
    Unutar iste klase:Ako konstruktori pripadaju istoj klasi, koristimo ovaj Iz osnovne klase:Ako konstruktor pripada različitim klasama (roditeljske i podređene klase), koristimo super ključna riječ za pozivanje konstruktora iz osnovne klase.

Zapamtite da promjena redoslijeda konstruktora ne utječe na izlaz.

Što je ulančavanje konstruktora u Javi

Potreba za ulančavanjem konstruktora

Pretpostavimo da treba izvršiti pet zadataka. Postoje dva načina za izvođenje ovih zadataka, ili implementacija svih zadataka u jednom konstruktoru ili stvaranje zasebnih zadataka u jednom konstruktoru.

Korištenjem mehanizma ulančavanja konstruktora možemo implementirati više zadataka u jednom konstruktoru. Dakle, kad god se suočimo s takvim problemima, trebali bismo koristiti ulančavanje konstruktora. Program možemo učiniti čitljivijim i razumljivijim ulančavanjem konstruktora.

Pravila ulančavanja konstruktora

  • Izraz koji koristi ovaj ključna riječ mora biti prvi redak konstruktora.
  • Narudžbanije bitno u ulančavanju konstruktora.
  • Mora postojati barem jedan konstruktor koji ne koristi ovaj

Konstruktor poziva drugog konstruktora

Pozivanje konstruktora može se izvršiti na dva načina:

značajke java8
    Korištenjem ključne riječi this():Koristi se kada želimo pozvati trenutni konstruktor klase unutar iste klase.Korištenjem ključne riječi super():Koristi se kada želimo pozvati konstruktor superklase iz osnovne klase.

Napomena: U istom bloku konstruktora ne možemo koristiti this() i super() istovremeno.

Razumimo ova dva pojma kroz Java programe.

Primjeri ulančavanja konstruktora

Pozivanje trenutnog konstruktora klase

Koristimo ovaj() ključna riječ ako želimo pozvati trenutni konstruktor klase unutar iste klase. Korištenje this() je obavezno jer JVM nikada ga ne stavljajte automatski kao super() ključna riječ. Imajte na umu da this() mora biti prvi redak konstruktora. Mora postojati barem jedan konstruktor bez ova () ključna riječ .

Sintaksa:

 this(); or this(parameters list); 

Na primjer:

 this(); this('Javatpoint'); 

Kreirajmo Java program i pozovimo trenutni konstruktor klase.

k algoritam klasteriranja

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(); } } 

Izlaz:

Što je ulančavanje konstruktora u Javi

U gornjem primjeru stvorili smo instancu klase bez prosljeđivanja ikakvog parametra. Prvo poziva zadani konstruktor, a zadani konstruktor preusmjerava poziv na parametrizirani zbog this(). Izjave unutar parametriziranog konstruktora se izvršavaju i vraćaju natrag na zadani konstruktor. Nakon toga se izvršava ostatak naredbi u zadanom konstruktoru i objekt se uspješno inicijalizira. Slijedeći je redoslijed pozivanja konstruktora:

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

Pozivanje Super Class Constructor

Ponekad moramo pozvati konstruktor superklase (roditeljske klase) iz podređene klase (izvedene klase) u takvim slučajevima koristimo ključnu riječ super() u konstruktoru izvedene klase. Nije obavezno napisati super() jer ga JVM automatski postavlja. Uvijek treba pisati u prvom redu. Dobivamo sintaktičku pogrešku ako pokušamo pozvati konstruktor superklase u podređenoj klasi.

Sintaksa:

 super(); or super(Parameter List); 

super(): Poziva bezargumentni ili zadani konstruktor superklase.

super(parametri): Poziva parametrizirani konstruktor superklase.

Zapamtite da se konstruktor superklase ne može naslijediti u podklasi. Može se pozvati iz konstruktora podklase pomoću ključne riječi super.

Kreirajmo Java program i implementirajmo ulančavanje konstruktora u naslijeđenu klasu.

string kao niz

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(); } } 

Izlaz:

Što je ulančavanje konstruktora u Javi