| | |
| |
|
Објектно оријентирани концепти во Јава - Трет дел |
Overload-увани методи (overloaded)
Понекогаш е згодно да имаме две различни верзии од истата метода. На пример, кога ја модифициравме методата „skiniJabolko“ во клата „Jabolknica“ за да прима параметар кој ќе специфицира колку јаболка да бидат скинати ја изгубивме поволноста на методата да со самиот повик на „skiniJabolko()“ едно јаболко да биде скинато. Јава всушност ти дозволува да креираш две методи во иста класа со исто име, но истите за да може Јава да ги разликува мора да примаат различен број и тип на параметри кои и се праќаат на методата. Методите кои се декларирани со повеќе од една верзија (како во примерот) се нарекуваат overload-увани методи.
Еве како би декларирале две верзии на методата „skiniJabolko“:
public boolean skiniJabolko(){
if (vkupnoJabolka == 0) return false;
vkupnoJabolka = vkupnoJabolka - 1;
return true;
}
public boolean skiniJabolko(int brojNaJabolka){
if (brojNaJabolka < 0) return false;
if (brojNaJabolka > vkupnoJabolka) return false;
vkupnoJabolka = vkupnoJabolka - brojNaJabolka;
return true;
}
Ај да ти заштедам на куцање во иднина и да ти напоменам дека методата „skiniJabolko()“ всушност е само специјален случај на методата „skiniJabolko(int brojNaJabolka)“ така да повикот до „skiniJabolko()“ е ист како и повикот „skiniJabolko(1)“, поради тоа блокот на методата „skiniJabolko()“ можеш слободно да го смениш во:
public boolean skiniJabolko(){
return skiniJabolko(1);
}
public boolean skiniJabolko(int brojNaJabolka){
if (brojNaJabolka < 0) return false;
if (brojNaJabolka > vkupnoJabolka) return false;
vkupnoJabolka = vkupnoJabolka - brojNaJabolka;
return true;
}
Во случајов не само што заштеди 2 линии на код туку сега кога и да имаш потреба да ја менуваш логиката на берење на јаболка ќе треба да направиш промени само во една метода, не во двете претходни.
Исто така и конструкторите може да бидат overload-увани на истот начин. Ако ти недостасува креирањето на дрво со „visina“ нула, тогаш декларирач уште еден конструктор кој нема да прима параметри:
private int visina;
public Drvo(){
this(0);
}
public Drvo(int visina){
if (visina < 0) this.visina = 0;
else this.visina = visina;
}
Приметуваш дека пак си заштедивме некоја линија код исто како и кај методите. Разлика е што во овој случај другиот контруктор го повикавме со „this(0)“ што всушност е исто, но сепак овде сакаме да пристапиме до конструкторот на објектот.
|
|
|
|
|
|
| |
|
|
---|
JavaTM и Java-базираните ознаки се трговски марки или регистрирани трговски марки на Sun Microsystems, Inc. во САД и други држави. Java.com.mk никако не соработува со Sun Microsystems, Inc. Сите други трговски марки се сопственост на нивните сопственици. |
|