у Јави, уланчавање конструктора је низ призивања конструктори при иницијализацији објекта. Користи се када желимо да позовемо већи број конструктора, један за другим користећи само инстанцу. У овом одељку ћемо разговарати уланчавање конструктора у Јави детаљно са одговарајућим примерима. Хајде да на брзину погледамо шта је конструктор у Јави.
Цонструцтор
Ин Јава , конструктор је исти као и метод, али једина разлика је у томе што конструктор има исто име као и име класе. Користи се за креирање инстанце класе. Позива се аутоматски када креирамо објекат класе. Нема тип повратка. Запамтите да конструктор не може бити апстрактан , коначни , синхронизовано , и статичне . Не можемо надјачати конструктор.
Постоје два типа конструктора у Јави:
- Подразумевани конструктор (познат и као конструктор без аргумената)
- Параметризовани конструктор
Цонструцтор Цхаининг
У ланцу конструктора, конструктор се позива из другог конструктора у истој класи овај процес је познат као уланчавање конструктора. Јавља се путем наслеђа. Када креирамо инстанцу изведене класе, прво се позивају сви конструктори наслеђене класе (базне класе), након тога се позива конструктор класе која позива (изведена класа).
Ланцање конструктора можемо постићи на два начина:
унордеред_мап ц++
Запамтите да промена редоследа конструктора не утиче на излаз.
Потреба за уланчавањем конструктора
Претпоставимо да је потребно извршити пет задатака. Постоје два начина за обављање ових задатака, или имплементација свих задатака у једном конструктору или креирање засебних задатака у једном конструктору.
Коришћењем механизма уланчавања конструктора, можемо имплементирати више задатака у једном конструктору. Дакле, кад год се суочимо са таквим типовима проблема, требало би да користимо уланчавање конструктора. Можемо учинити програм читљивијим и разумљивијим коришћењем уланчавања конструктора.
Правила уланчавања конструктора
- Израз који користи ово кључна реч мора бити први ред конструктора.
- Мора постојати бар један конструктор који не користи ово
Позивање конструктора формира други конструктор
Позивање конструктора се може обавити на два начина:
Напомена: У истом блоку конструктора, не можемо користити тхис() и супер() истовремено.
Хајде да разумемо ова два концепта кроз Јава програме.
Примери ланчања конструктора
Позивање конструктора тренутне класе
Користимо ово() кључну реч ако желимо да позовемо конструктор тренутне класе у оквиру исте класе. Употреба тхис() је обавезна јер ЈВМ никада га не стављајте аутоматски као супер() кључна реч. Имајте на уму да тхис() мора бити прва линија конструктора. Мора постојати најмање један конструктор без тхис() кључна реч .
Синтакса:
уради док је у Јави
this(); or this(parameters list);
На пример:
this(); this('Javatpoint');
Хајде да направимо Јава програм и позовимо конструктор тренутне класе.
.нект јава
ЦонструцторЦхаин.јава
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(); } }
Излаз:
У горњем примеру, креирали смо инстанцу класе без прослеђивања параметра. Прво позива подразумевани конструктор и подразумевани конструктор преусмерава позив на параметризовани због тхис(). Изјаве унутар параметризованог конструктора се извршавају и враћају назад у подразумевани конструктор. Након тога се извршавају остали изрази у подразумеваном конструктору и објекат се успешно иницијализује. Следеће је позивна секвенца конструктора:
ConstructorChain cc = new ConstructorChain(); -> ConstructorChain() -> ConstructorChain(String str) -> System.out.println() -> ConstructorChain() -> System.out.println()
Позивање Супер Цласс Цонструцтор
Понекад морамо да позовемо конструктор суперкласе (родитељске класе) из подређене класе (изведене класе) у таквим случајевима, користимо кључну реч супер() у конструктору изведене класе. Није обавезно написати супер() јер га ЈВМ аутоматски ставља. Увек треба писати у првом реду. Добијамо синтаксичку грешку ако покушамо да позовемо конструктор суперкласе у подређеној класи.
Синтакса:
super(); or super(Parameter List);
супер(): Позива конструктор без аргумената или подразумевани конструктор суперкласе.
хасхмап јава
супер(параметри): Позива параметаризовани конструктор суперкласе.
Запамтите да се конструктор суперкласе не може наследити у подкласи. Може се позвати из конструктора поткласе помоћу кључне речи супер.
Хајде да направимо Јава програм и применимо уланчавање конструктора у наслеђеној класи.
ЦонструцторЦхаининг.јава
//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(); } }
Излаз: