В Java, верижно свързване на конструктор е последователност от извикване конструктори при инициализиране на обект. Използва се, когато искаме да извикаме няколко конструктора, един след друг, като използваме само екземпляр. В този раздел ще обсъдим верижно свързване на конструктори в Java подробно с подходящи примери. Нека да разгледаме набързо какво е конструктор в Java.
Конструктор
в Java , конструкторът е същото като метод, но единствената разлика е, че конструкторът има същото име като името на класа. Използва се за създаване на екземпляр на класа. Извиква се автоматично, когато създаваме обект от класа. Няма тип връщане. Не забравяйте, че конструктор не може да бъде абстрактно , финал , синхронизирани , и статичен . Не можем да отменим конструктор.
В Java има два типа конструктори:
- Конструктор по подразбиране (известен също като конструктор без аргументи)
- Параметризиран конструктор
Верижно свързване на конструктор
Във веригата на конструктора конструктор се извиква от друг конструктор в същия клас, като този процес е известен верижно свързване на конструктор. Възниква по наследство. Когато създаваме екземпляр на производен клас, първо се извикват всички конструктори на наследения клас (базов клас), след което се извиква конструкторът на извикващия клас (производен клас).
Можем да постигнем верижно свързване на конструктор по два начина:
маркдаун изображения
Не забравяйте, че промяната на реда на конструктора не влияе на изхода.
Необходимостта от верижно свързване на конструктори
Да предположим, че има пет задачи за изпълнение. Има два начина за изпълнение на тези задачи, или да внедрите всички задачи в един конструктор, или да създадете отделни задачи в един конструктор.
Използвайки механизма за верижно свързване на конструктори, можем да реализираме множество задачи в един конструктор. Така че винаги, когато се сблъскаме с такива проблеми, трябва да използваме верижно свързване на конструктори. Можем да направим програмата по-четлива и разбираема, като използваме верижно свързване на конструктори.
Правила за верижно свързване на конструктори
- Израз, който използва това ключовата дума трябва да е първият ред на конструктора.
- Трябва да съществува поне един конструктор, който не използва това
Извикване на конструктор от друг конструктор
Извикването на конструктора може да стане по два начина:
Забележка: В един и същ блок конструктор не можем да използваме 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 граница
В горния пример създадохме екземпляр на класа, без да предаваме никакъв параметър. Първо извиква конструктора по подразбиране и конструкторът по подразбиране пренасочва извикването към параметризирания поради 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(); } }
Изход: