logo

Co to jest łączenie konstruktorów w Javie?

na Jawie, łączenie konstruktorów jest sekwencją wywołań konstruktorzy po inicjalizacji obiektu. Używa się go, gdy chcemy wywołać wiele konstruktorów, jeden po drugim, używając tylko instancji. W tej części omówimy szczegółowe łączenie konstruktorów w Javie z odpowiednimi przykładami. Rzućmy okiem na czym jest konstruktor w Javie.

Konstruktor

W Jawa , konstruktor jest tym samym, co metoda, ale jedyną różnicą jest to, że konstruktor ma taką samą nazwę jak nazwa klasy. Służy do tworzenia instancji klasy. Wywoływana jest automatycznie, gdy tworzymy obiekt klasy. Nie ma typu powrotu. Pamiętaj, że konstruktor nie może być abstrakcyjny , finał , zsynchronizowane , I statyczny . Nie możemy zastąpić konstruktora.

W Javie istnieją dwa typy konstruktorów:

  • Konstruktor domyślny (znany również jako konstruktor bezargumentowy)
  • Konstruktor parametryczny

Łańcuch konstruktorów

W łańcuchu konstruktorów konstruktor wywoływany jest przez innego konstruktora w tej samej klasie, jak nazywa się ten proces łączenie konstruktorów. Następuje poprzez dziedziczenie. Kiedy tworzymy instancję klasy pochodnej, najpierw wywoływane są wszystkie konstruktory klasy dziedziczonej (klasy bazowej), a następnie konstruktor klasy wywołującej (klasy pochodnej).

Łańcuch konstruktorów możemy osiągnąć na dwa sposoby:

instalacja mavena
    W tej samej klasie:Jeśli konstruktory należą do tej samej klasy, używamy Ten Z klasy bazowej:Jeśli konstruktor należy do różnych klas (rodziców i dzieci), używamy metody Super słowo kluczowe wywołujące konstruktor z klasy bazowej.

Pamiętaj, że zmiana kolejności konstruktora nie ma wpływu na wynik.

Co to jest łączenie konstruktorów w Javie

Potrzeba łączenia konstruktorów

Załóżmy, że mamy do wykonania pięć zadań. Zadania można wykonać na dwa sposoby: zaimplementować wszystkie zadania w jednym konstruktorze lub utworzyć osobne zadania w jednym konstruktorze.

Wykorzystując mechanizm łączenia konstruktorów, możemy zaimplementować wiele zadań w jednym konstruktorze. Zatem zawsze, gdy napotykamy tego typu problemy, powinniśmy zastosować łączenie konstruktorów. Możemy uczynić program bardziej czytelnym i zrozumiałym, stosując łączenie konstruktorów.

Zasady łączenia konstruktorów

  • Wyrażenie, które używa Ten słowo kluczowe musi być pierwszą linią konstruktora.
  • Zamówienienie ma znaczenia w łańcuchu konstruktorów.
  • Musi istnieć co najmniej jeden konstruktor, który nie używa Ten

Konstruktor Wywołanie innego konstruktora

Wywołanie konstruktora można wykonać na dwa sposoby:

    Używając this() słowa kluczowego:Używa się go, gdy chcemy wywołać konstruktora bieżącej klasy w tej samej klasie.Używając słowa kluczowego super():Używa się go, gdy chcemy wywołać konstruktor nadklasy z klasy bazowej.

Uwaga: W tym samym bloku konstruktora nie możemy jednocześnie używać funkcji this() i super().

Rozumiemy te dwie koncepcje za pomocą programów Java.

np. wyjątkowy

Przykłady łączenia konstruktorów

Wywoływanie konstruktora bieżącej klasy

Używamy Ten() słowo kluczowe, jeśli chcemy wywołać konstruktora bieżącej klasy w tej samej klasie. Użycie this() jest obowiązkowe, ponieważ JVM nigdy nie umieszczaj tego automatycznie, tak jak Super() słowo kluczowe. Zauważ, że this() musi być pierwszą linią konstruktora. Musi istnieć co najmniej jeden konstruktor bez słowo kluczowe this(). .

Składnia:

 this(); or this(parameters list); 

Na przykład:

 this(); this('Javatpoint'); 

Stwórzmy program w Javie i wywołajmy konstruktora bieżącej klasy.

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

Wyjście:

aktor Ranbir Kapoor wiek
Co to jest łączenie konstruktorów w Javie

W powyższym przykładzie utworzyliśmy instancję klasy bez przekazywania żadnego parametru. Najpierw wywołuje konstruktor domyślny, a konstruktor domyślny przekierowuje wywołanie do konstruktora sparametryzowanego z powodu this(). Instrukcje wewnątrz sparametryzowanego konstruktora są wykonywane i wracają do konstruktora domyślnego. Następnie wykonywana jest reszta instrukcji konstruktora domyślnego i pomyślnie inicjowany jest obiekt. Poniżej znajduje się sekwencja wywołań konstruktora:

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

Wywoływanie konstruktora superklasy

Czasami musimy wywołać konstruktor nadklasy (klasy nadrzędnej) z klasy potomnej (klasy pochodnej). W takich przypadkach używamy słowa kluczowego super() w konstruktorze klasy pochodnej. Napisanie super() jest opcjonalne, ponieważ JVM automatycznie je umieszcza. Zawsze należy pisać w pierwszej linijce. Próba wywołania konstruktora nadklasy w klasie podrzędnej powoduje błąd składniowy.

Składnia:

 super(); or super(Parameter List); 

Super(): Wywołuje konstruktor bezargumentowy lub domyślny konstruktor nadklasy.

darmowy kontra darmowy

super(parametry): Wywołuje sparametryzowany konstruktor nadklasy.

Pamiętaj, że konstruktor nadklasy nie może być dziedziczony w podklasie. Można ją wywołać z konstruktora podklasy za pomocą słowa kluczowego super.

Stwórzmy program w języku Java i zaimplementujmy łączenie konstruktorów w dziedziczonej klasie.

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

Wyjście:

Co to jest łączenie konstruktorów w Javie