Имплицитно и експлицитно везивање конструктора

Ланац конструктора на Јави је једноставно чин једног конструктора који позива другог конструктора путем наслеђивање. То се подразумијева кад се конструира подразред: први задатак је назвати конструкторски метод свог родитеља. Али програмери такође могу позвати другог конструктора изричито користећи кључне речи ово () или супер (). Тхе ово () кључна реч позива другу преоптерећен конструктор у истом разреду; тхе тхе супер () кључна реч позива не-подразумевани конструктор у суперкласи.

Имплицитно везање конструктора

Ланац конструктора настаје употребом наследства. Први задатак конструктора поткласа је назвати методом конструктора његове преткласе. Ово осигурава да креирање објекта подразреда започиње иницијализацијом класа изнад њега у ланцу наслеђивања.

Могло би да постоји било који број часова у наследном ланцу. Свака метода конструктора позива ланац све док класа на врху није достигнута и иницијализирана. Тада се свака наредна класа у наставку иницијализира како се ланац враћа до изворне поткласе. Овај процес се назива везивање конструктора.

instagram viewer

Напоменути да:

  • Овај имплицитни позив надкласи је исти као да је подразред укључио супер () кључна реч, тј. супер () овде се подразумева
  • Ако конструктор без аргова није укључен у класу, Јава га креира иза сцене и позива га. То значи да ако ваш једини конструктор узима аргумент, морате експлицитно користи ово () или супер () кључну реч да бисте је позвали (погледајте доле).

Размислите о овој животињској класи, коју је сисар надокнадио:

класа Анимал {
// конструктор
Анимал () {
 Систем.оут.принтлн ("Ми смо у класи конструктор Анимал.");
}
}
класа Сисар продужава животиње {
//constructor
Сисар () {
 Систем.оут.принтлн ("Ми смо у конструктору Маммал класе.");
}
}

А сада, инстанцирајмо класу Маммал:

јавна класа ЦхаинингЦонструцторс {
 /**
* @парам аргс
*/
јавни статички воид маин (Стринг [] аргс) {
Сисар м = нови сисар ();
}
}

Када се горњи програм покрене, Јава имплицитно покреће позив конструктору супер класе Анимал, а затим конструктору класе. Излаз ће, дакле, бити:

Ми смо у класи конструктор Анимал
Ми смо у разреду Маммал конструктор

Изричито везање конструктора користећи ово () или супер ()

Експлицитна употреба ово () или супер () кључне речи омогућавају вам да позовете конструктор који није задани.

  • Да бисте позвали нон-аргс задани конструктор или преоптерећени конструктор из исте класе, користите ово () кључна реч.
  • Да бисте позвали не подразумевани конструктор суперкласе из подразреда, користите тастер супер () кључна реч. На пример, ако суперкласа има више конструктора, поткласа ће увек желети да позове одређени конструктор, а не подразумевани.

Имајте на уму да позив другом конструктору мора бити прва изјава у конструктору или Јава ће бацити грешку у компилацији.

Размотрите шифру у којој нови подразред, месождерке, наслеђује од класа сисара који наслеђује од класе животиња, а свака класа сада има конструктор који узима аргумент.

Ево животиње из супер класе:

Живот у јавној класи
приватно име стринга;
јавна животиња (име низа) // конструктор с аргументом
{
тхис.наме = име;
Систем.оут.принтлн ("Прво сам извршен.");
}
}
Имајте на уму да конструктор сада узима а име типа Низ као параметар и које тело класе позива ово () на конструктору. Без изричите употребе тхис.наме, Јава би створила подразумевани конструктор без аргова и позвала то.

Ево подкласе Сисар:

јавна класа Сисар продужава животиње {
јавни сисавац (Име струне)
{
супер (име);
Систем.оут.принтлн ("погубљен сам други");
}
}

Његов конструктор такође узима аргумент и користи супер (име) позивати се на одређени конструктор у његовом суперразреду.

Ево још једног подразреда месождерке. Ово наслеђује од сисара:

Царниворе из јавне класе проширио сисара {
јавни месождер (назив струне)
{
супер (име);
Систем.оут.принтлн ("Последњи сам извршен");
}
}

Када се покрену, ова три блока кода би се штампала:

Прво сам погубљен.
Погубљен сам други.
Задњи сам погубљен.

За поновни прелазак: Када се створи инстанца класе Царниворе, прва радња њене конструкторске методе је позивање конструктора метода Маммал. Слично томе, прва радња методе конструктора Маммал је називање методе конструктора Животиња. Ланац конструктивне методе позива осигурава да је инстанца објекта Царниворе правилно иницијализирала све класе у свом наследном ланцу.