logo

Какво представлява верижното свързване на конструктори в Java?

В Java, верижно свързване на конструктор е последователност от извикване конструктори при инициализиране на обект. Използва се, когато искаме да извикаме няколко конструктора, един след друг, като използваме само екземпляр. В този раздел ще обсъдим верижно свързване на конструктори в Java подробно с подходящи примери. Нека да разгледаме набързо какво е конструктор в Java.

Конструктор

в Java , конструкторът е същото като метод, но единствената разлика е, че конструкторът има същото име като името на класа. Използва се за създаване на екземпляр на класа. Извиква се автоматично, когато създаваме обект от класа. Няма тип връщане. Не забравяйте, че конструктор не може да бъде абстрактно , финал , синхронизирани , и статичен . Не можем да отменим конструктор.

В Java има два типа конструктори:

  • Конструктор по подразбиране (известен също като конструктор без аргументи)
  • Параметризиран конструктор

Верижно свързване на конструктор

Във веригата на конструктора конструктор се извиква от друг конструктор в същия клас, като този процес е известен верижно свързване на конструктор. Възниква по наследство. Когато създаваме екземпляр на производен клас, първо се извикват всички конструктори на наследения клас (базов клас), след което се извиква конструкторът на извикващия клас (производен клас).

Можем да постигнем верижно свързване на конструктор по два начина:

маркдаун изображения
    В рамките на същия клас:Ако конструкторите принадлежат към един и същи клас, използваме това От базовия клас:Ако конструкторът принадлежи към различни класове (родителски и дъщерни класове), ние използваме супер ключова дума за извикване на конструктора от базовия клас.

Не забравяйте, че промяната на реда на конструктора не влияе на изхода.

Какво е верижно свързване на конструктори в Java

Необходимостта от верижно свързване на конструктори

Да предположим, че има пет задачи за изпълнение. Има два начина за изпълнение на тези задачи, или да внедрите всички задачи в един конструктор, или да създадете отделни задачи в един конструктор.

Използвайки механизма за верижно свързване на конструктори, можем да реализираме множество задачи в един конструктор. Така че винаги, когато се сблъскаме с такива проблеми, трябва да използваме верижно свързване на конструктори. Можем да направим програмата по-четлива и разбираема, като използваме верижно свързване на конструктори.

Правила за верижно свързване на конструктори

  • Израз, който използва това ключовата дума трябва да е първият ред на конструктора.
  • Поръчканяма значение при верижното свързване на конструктора.
  • Трябва да съществува поне един конструктор, който не използва това

Извикване на конструктор от друг конструктор

Извикването на конструктора може да стане по два начина:

    С помощта на тази() ключова дума:Използва се, когато искаме да извикаме конструктора на текущия клас в рамките на същия клас.Чрез използване на ключова дума super():Използва се, когато искаме да извикаме конструктора на суперклас от базовия клас.

Забележка: В един и същ блок конструктор не можем да използваме this() и super() едновременно.

Нека разберем тези две концепции чрез Java програми.

как да отворите файл с java

Примери за верижно свързване на конструктори

Извикване на конструктор на текущия клас

Ние използваме това() ключова дума, ако искаме да извикаме текущия конструктор на клас в рамките на същия клас. Използването на this() е задължително, защото JVM никога не го поставяйте автоматично като супер() ключова дума. Имайте предвид, че this() трябва да е първият ред на конструктора. Трябва да съществува поне един конструктор без тази() ключова дума .

Синтаксис:

 this(); or this(parameters list); 

Например:

 this(); this('Javatpoint'); 

Нека създадем Java програма и извикаме конструктора на текущия клас.

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

Изход:

css граница
Какво е верижно свързване на конструктори в Java

В горния пример създадохме екземпляр на класа, без да предаваме никакъв параметър. Първо извиква конструктора по подразбиране и конструкторът по подразбиране пренасочва извикването към параметризирания поради this(). Изявленията вътре в параметризирания конструктор се изпълняват и се връщат обратно към конструктора по подразбиране. След това се изпълняват останалите оператори в конструктора по подразбиране и обектът се инициализира успешно. Следва последователността на извикване на конструктора:

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

Извикване на Super Class Constructor

Понякога трябва да извикаме конструктора на суперклас (родителски клас) от дъщерния клас (производен клас) в такива случаи използваме ключовата дума super() в конструктора на производния клас. Не е задължително да напишете super(), защото JVM автоматично го поставя. Винаги трябва да се пише на първия ред. Получаваме синтактична грешка, ако се опитаме да извикаме конструктор на суперклас в дъщерния клас.

Синтаксис:

 super(); or super(Parameter List); 

супер(): Той извиква конструктора без аргументи или конструктора по подразбиране на суперкласа.

анотации за пролетно зареждане

супер(параметри): Той извиква параметризирания конструктор на суперкласа.

Не забравяйте, че конструкторът на суперкласа не може да бъде наследен в подкласа. Може да бъде извикан от конструктора на подклас, като се използва ключовата дума super.

Нека създадем 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(); } } 

Изход:

Какво е верижно свързване на конструктори в Java