Јава конструктор креира нову инстанцу већ дефинисаног објекта. Овај чланак говори о томе како користити Јава конструктор методе за креирање Персон објекта.
Белешка: За овај пример морате да креирате две датотеке у истој мапи: Персон.јава дефинише класу особе и ПерсонЕкампле.јава садржи главни метод што ствара Персон објекте.
Метода конструктора
Започнимо креирањем класе Персон која има четири приватна поља: фирстНаме, ластНаме, адреса и корисничко име. Ова поља су приватне променљиве и заједно њихове вредности чине стање објекта. Додали смо и најједноставније конструкторске методе:
Особа из јавне класе {
приватно Стринг фирстНаме;
приватно Стринг ластНаме;
приватна стринг адреса;
приватно корисничко име стринга;
// Конструкторски метод
јавно лице ()
{
}
}
Метода конструктора слична је било којој другој јавној методи, осим што има исти назив као класа и не може вратити вриједност. Може имати ниједан, један или више параметара.
Тренутно наша конструкторска метода не ради ништа, и право је време да размотрите шта то значи за почетно стање објекта Персон. Ако смо оставили ствари такве какве јесу или нисмо укључили конструкторски метод у нашу класу Персон (у
Јава можете дефинисати класу без и једне), онда поља не би имала вредности - и сигурно желимо да наша особа има име и адресу као и друге карактеристике. Ако мислите да постоји шанса да ваш објект можда неће бити кориштен онако како очекујете и поља се можда неће иницијализирати када се објект створи, увек их дефинишите са заданом вредностом:Особа из јавне класе {
привате Стринг фирстНаме = "";
привате Стринг ластНаме = "";
приватна стринг стринг = "";
приватно корисничко име стринг = "";
// Конструкторски метод
јавно лице ()
{
}
}
Обично, да би се осигурала да је конструкторска метода корисна, дизајнирали бисмо је да очекује параметре. Вриједности које су прослијеђене кроз ове параметре могу се користити за постављање вриједности приватних поља:
Особа из јавне класе {
приватно Стринг фирстНаме;
приватно Стринг ластНаме;
приватна стринг адреса;
приватно корисничко име стринга;
// Конструкторски метод
јавна особа (Стринг персонФирстнаме, Стринг персонЛастНаме, Стринг персонАдрес, Стринг персонУсернаме)
{
фирстНаме = персонФирстНаме;
ластНаме = персонЛастНаме;
адреса = особа адреса;
корисничко име = особа, корисничко име;
}
// Метода за приказивање стања објекта на екрану
јавни неважећи приказПерсонДетаилс ()
{
Систем.оут.принтлн ("Име:" + прво име + "" + последње име);
Систем.оут.принтлн ("Адреса:" + адреса);
Систем.оут.принтлн ("Корисничко име:" + корисничко име);
}
}
Наша конструкторска метода сада очекује да ће му се пренети вредности четири низа. Затим се користе за постављање почетног стања објекта. Такође смо додали нову методу која се зове дисплаиПерсонДетаилс () да нам омогући да видимо стање објекта након што је створен.
Позивање методе конструктора
За разлику од других метода објекта, метода конструктора се мора позвати помоћу кључне речи "нев":
Јавна класа ПерсонЕкампле {
јавни статички воид маин (Стринг [] аргс) {
Особа даве = нова особа („Дејв“, „Давидсон“, „12 главних улица“, „ДДавидсон“);
даве.дисплаиПерсонДетаилс ();
}
}
Ево шта смо урадили:
- Да креирамо нову инстанцу објекта Персон, прво дефинишемо променљиву врсту Персон која ће држати објект. У овом примеру смо то и назвали Даве.
- С друге стране знака једнаке, зовемо конструкторску методу наше класе Персон и преносимо јој четири низа вриједности. Наша конструкторска метода узеће те четири вредности и поставиће почетно стање објекта Персон да буде: фирстНаме = "Даве", ластНаме = "Давидсон", адреса = "12 Маин Ст", корисничко име = "ДДавидсон".
Обратите пажњу на то како смо се пребацили на Јава класу да бисмо позвали објект Персон. Када радите са објектима, програми ће се распоређивати више .јава датотека. Обавезно их сачувајте у истој мапи. Да бисте компилирали и покренули програм, једноставно компајлирајте и покрените Јава главна класа датотека (тј. ПерсонЕкампле.јава). Јава компајлер је довољно паметан да схвати да желите да саставите Персон.јава датотеку, јер се види да сте је користили у класи ПерсонЕкампле.
Именовање параметара
Јава преводилац се збуњује ако параметри методе конструктора имају иста имена као и приватна поља. У овом примеру можете видети да смо их разликовали префиксом параметара речју „особа“. Вреди напоменути да постоји и други начин. Уместо тога, можемо да користимо кључну реч „ово“:
// Конструкторски метод
јавна особа (Стринг фирстНаме, Стринг ластНаме, Стринг адреса, Стринг корисничко име)
{
тхис.фирстНаме = фирстНаме;
тхис.ластНаме = ластНаме;
тхис.аддресс = адреса;
тхис.усернаме = корисничко име;
}
Кључна реч „ово“ говори Јава компајлеру да је променљива којој се додељује вредност она коју дефинише класа, а не параметар. То је питање стила програмирања, али ова метода нам помаже да дефинирамо параметре конструктора без употребе више имена.
Више од једне методе конструктора
Када дизајнирате класе објеката, нисте ограничени на коришћење само једне конструкторске методе. Можете одлучити да постоји неколико начина на који се предмет може иницијализирати. Једино ограничење употребе више метода конструктора је то што се параметри морају разликовати.
Замислите да у тренутку када креирамо објект Персон можда не знамо корисничко име. Додајмо нову конструктивну методу која поставља стање објекта Персон користећи само фирстНаме, ластНаме и адресу:
Особа из јавне класе {
приватно Стринг фирстНаме;
приватно Стринг ластНаме;
приватна стринг адреса;
приватно корисничко име стринга;
// Конструкторски метод
јавна особа (Стринг фирстНаме, Стринг ластНаме, Стринг адреса, Стринг корисничко име)
{
тхис.фирстНаме = фирстНаме;
тхис.ластНаме = ластНаме;
тхис.аддресс = адреса;
тхис.усернаме = корисничко име;
}
// Метода новог конструктора
јавна особа (Стринг фирстНаме, Стринг ластНаме, Стринг аддресс)
{
тхис.фирстНаме = фирстНаме;
тхис.ластНаме = ластНаме;
тхис.аддресс = адреса;
тхис.усернаме = "";
}
// Метода за приказивање стања објекта на екрану
јавни неважећи приказПерсонДетаилс ()
{
Систем.оут.принтлн ("Име:" + прво име + "" + последње име);
Систем.оут.принтлн ("Адреса:" + адреса);
Систем.оут.принтлн ("Корисничко име:" + корисничко име);
}
}
Имајте на уму да се други начин конструктора такође назива "Персон" и да такође не враћа вредност. Једина разлика између њега и првог метода конструктора су параметри - овај пут то очекује само три вриједности низа: фирстНаме, ластНаме и адреса.
Сада можемо да правимо Персон објекте на два различита начина:
Јавна класа ПерсонЕкампле {
јавни статички воид маин (Стринг [] аргс) {
Особа даве = нова особа („Дејв“, „Давидсон“, „12 главних улица“, „ДДавидсон“);
Персон јим = нова особа ("Јим", "Давидсон", "15 Кингсових путева");
даве.дисплаиПерсонДетаилс ();
јим.дисплаиПерсонДетаилс ();
}
}
Особа Даве биће креирано са фирстНаме, ластНаме, адресом и корисничким именом. Особа јим, међутим, неће добити корисничко име, тј. корисничко име ће бити празан низ: корисничко име = "".
Брзи резиме
Методе конструктора се позивају само када се створи нова инстанца објекта. Они:
- Мора да има исти назив као и класа
- Не враћајте вредност
- Не може имати ниједног, једног или много параметара
- Може бројати више од једног све док свака конструкторска метода има различит скуп параметара
- Могу имати имена параметара исто као и приватна поља све док се користи кључна реч "овај"
- Зову се помоћу кључне речи "нев"