У објектно оријентисаном програмирању, конструктор је посебна функција коју позивате да бисте креирали објекат. Конструктори имају неколико јединствених карактеристика које им омогућавају рад.

У Јави именујете конструктор по његовој класи. Конструктор је метода дефинисана у класи на коју се односи. Јава конструктори могу користити преоптерећење да би обезбедили алтернативно понашање. Конструктори у Јави такође могу користити наследство за поновну употребу кода.

Зашто су вам конструктори уопште потребни?

Конструктори су главни ослонац објектно оријентисано програмирање, и Јава није изузетак. Овај пример показује како можете дефинисати основну класу Цирцле са једним својством података и једним методом:

јавни класни круг {
јавни двоструки радијус;
јавна двострука површина () {повратак 3.14159 * радијус * радијус; }
}

Затим можете створити инстанцу ове класе и ступити у интеракцију с њом:

Круг ц = нови круг ();
ц.радијус = 2;
Систем.оут.принтлн (ц.ареа ()); // 12.56636

Али ово је мање згодно и робусно него што би могло бити. Добра је објектно оријентисана пракса да се подаци инкапсулирају и штите од неовлашћеног приступа:

instagram viewer

јавни класни круг {
приватни двоструки радијус;
јавна двострука површина () {повратак 3.14159 * радијус * радијус; }
јавна празнина сетРадиус (двоструко р) {радијус = р; }
}

Сада позивни код може да користи сетРадиус метода и не морате бринути о детаљима његове примене:

Круг ц = нови круг ();
ц.сетРадиус (2);

Конструктори нуде још бољи начин достављања података до објекта када га креирате. Они се врло често користе за иницијализацију својстава, као што је радијус овде.

Примери једноставних конструктора

Најосновнији конструктор је онај без аргумената, који не ради ништа:

јавни класни круг {
јавни круг () {}
}

Такође видети: Научите како да креирате часове у Јави

Ако не дефинишете конструктор, Јава ће обезбедити подразумевани који се понаша на исти начин.

Запазите неколико ствари:

  1. Име конструктора одговара имену класе.
  2. Овај конструктор користи јавно модификатор приступа, тако да га може позвати било који други код.
  3. Конструктор не укључује тип повратка. За разлику од других метода, конструктори не могу вратити вредност.

Конструктори обично врше неку врсту иницијализације. Имајте на уму да горњи код не иницијализује вредност радијуса. У овом случају, језик ће га аутоматски поставити на нулу. Ова класа очекује да корисник користи сетРадиус (). Да бисте користили корисније подразумевано од 0, можете га доделити у конструктору:

јавни класни круг {
јавни круг () {радијус = 1; }
}

Кругови створени са овом класом барем ће сада имати стварну површину! Позиватељ и даље може да користи сетРадиус () да обезбеди радијус који није 1. Али конструктор може бити још љубазнији:

јавни класни круг {
јавни круг (двоструко р) {радијус = р; }
}

Сада можете да креирате кругове са одређеним радијусом одмах од рођења:

Круг ц = нови круг (2);
Систем.оут.принтлн (ц.ареа ()); // 12.56636

Ово је врло честа употреба за конструкторе. Често ћете их користити за иницијализацију променљивих у вредности параметара.

Преоптерећење конструктора

Можете одредити више од једног конструктора у дефиницији класе:

јавни круг () {радијус = 1; }
јавни круг (двоструко р) {радијус = р; }

Ово даје позивном коду избор како да конструише објекте:

Круг ц1 = нови круг (2);
Круг ц2 = нови круг ();
Систем.оут.принтлн (ц1.ареа () + "," + ц2.ареа ()); // 12.56636, 3.14159

Са мало сложенијим кругом можете истраживати занимљивије конструкторе. Ова верзија чува свој положај:

јавни класни круг {
јавни двојник к, и, радијус;
јавни круг () {радијус = р; }
јавни круг (двоструко р) {радијус = р; }
јавни круг (дупли к, двоструки и, двоструки р) {
ово.к = к; тхис.и = и; полупречник = р;
}

јавна двострука површина () {повратак 3.14159 * радијус * радијус; }
}

Сада можете створити круг без аргумената, једног радијуса или к и и координата уз радијус. Ово је иста врста преоптерећења коју Јава подржава за било који метод.

Ланац конструктора

Шта кажете на стварање једног круга, заснованог на другом? То би нам омогућило лако копирање кругова. Обратите пажњу на следећи блок:

јавни круг (круг ц) {
ово.к = ц.к;
тхис.и = ц.и;
тхис.радиус = ц.радиус;
}

Ово ће успети, али непотребно понавља неки код. Будући да класа Цирцле већ има конструктор који обрађује појединачна својства, то можете уместо тога позвати помоћу ово кључна реч:

јавни круг (круг ц) {
ово (ц.к, ц.и, ц.радиус);
}

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

Позивање родитељског конструктора

Други облик уланчавања конструктора јавља се када конструктор позове конструктор своје родитељске класе. Ово може бити експлицитно или имплицитно. Да бисте експлицитно позвали надређени конструктор, користите супер кључна реч:

супер (к, и);

Замислите класу Схапе која делује као родитељ Круга:

облик јавне класе {
двоструко к, и;
јавни облик (доубле _к, доубле _и) {к = _к; и = _и; }
}

Обрађује заједничко позиционирање за све облике, јер је то функционалност коју сви деле. Сада класа Цирцле може да пренесе надгледање положаја свом родитељу:

круг јавног сталежа продужава Облик {
двоструки радијус;
јавни круг (двоструки р) {супер (0, 0); полупречник = р; }
јавни круг (дупли к, двоструки и, двоструки р) {
супер (к, и);
полупречник = р;
}
}

Изградња суперкласе је веома важан аспект наслеђе у Јави. Језик га подразумевано примењује ако не изричито не позовете супер у вашим конструкторима.

Приступити модификаторима на конструкторима

Конструктори могу у свој потпис укључити модификатор приступа. Као и друге методе, ово дефинише које врсте позивалаца могу приступити конструктору:

тест јавне класе {
приватни статички тест уникуеИнстанце = нев Тест ();
приватни тест () {}
јавни статички тест гетИнстанце () {
ретурн уникуеИнстанце;
}
}

Ово је сложенији пример, па припазите да га разумете:

  • Класа није апстрактна, па је могуће из ње направити пример.
  • Конструктор је приватан, тако да само ова класа сама може створити нову инстанцу.
  • Кроз статичко својство и метод, класа излаже јединствену јединствену инстанцу себе позиваоцима.

Користите конструкторе у Јави за креирање објеката

Конструктори су витални за објектно оријентисано програмирање. Омогућавају вам стварање предмета, што је неопходно!

У Јави конструктори изгледају као и друге методе и раде приближно на исти начин. Требали бисте запамтити посебна правила око подразумеваних конструктора, преоптерећења и уланчавања конструктора. Ако су вам конструктори нови, можда ћете желети да прочитате остале основне Јава концепте које бисте требали научити приликом почетка.

Емаил
10 основних концепата Јава које бисте требали научити кад започнете

Било да пишете ГУИ, развијате софтвер на страни сервера или мобилну апликацију помоћу Андроида, учење Јава ће вам добро послужити. Ево неколико основних Јава концепата који ће вам помоћи да започнете.

Прочитајте следеће

Повезане теме
  • Програмирање
  • Јава
  • Савети за кодирање
О аутору
Бобби Јацк (Објављен 51 чланак)

Бобби је технолошки ентузијаст који је већ две две деценије радио као програмер софтвера. Заљубљен је у игре на срећу, радећи као уредник рецензија у часопису Свитцх Плаиер, и уживан је у свим аспектима објављивања на мрежи и веб развоја.

Још од Бобби Јацк-а

Претплатите се на наш билтен

Придружите се нашем билтену за техничке савете, прегледе, бесплатне е-књиге и ексклузивне понуде!

Још један корак…!

Молимо потврдите своју адресу е-поште у е-поруци коју смо вам управо послали.

.