Чекор по чекор
Почетни чекори со Java
Објектно оријентирани концепти во Јава - Прв дел
Објектно оријентирани концепти во Јава - Втор дел
Објектно оријентирани концепти во Јава - Трет дел
Јава сервлети - Прв дел
Единствен Јава објект (singleton)
Најчести 10 грешки што ги прават Java програмерите
повеќе...
Што е тоа ...
... IDE
... Tomcat
... објект?
... класа?
... наследување?
... интерфејс?
... наследување? (прашања и одговори)
повеќе...
За загревање
Нов проект во Eclipse?
Примитивни податочни типови
Променливи
Оператори
Доделувачки, аритметички и Unary оператори
Оператори за еднаквост, релации и услови
Изрази, искази и блокови
повеќе...
Како да ...
... конвертирам java.sql.Timestamp во java.util.Date
... зададам формат на датум
... ковертирам „long“ во HEX и обратно
... прочитам датотека и променам стринг
... креирам ZIP датотека
... поврзам Apache и Tomcat користејќи mod_jk
... пратам недефиниран број на атрибути до некоја метода
повеќе...
Java преку примери
new Socket(String addr,int port)
new URL(String address)
new URL(String protocol, String host, int port, String file)
CommPort: getInputStream()
CommPortIdentifier: getPortIdentifiers()
Statement: executeQuery(String sql)
Statement: getMaxRows()
повеќе...
Грешка
Нов напис
Рубрика:
Наслов:
  
  

страна број:123
Објектно оријентирани концепти во Јава - Трет дел
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)“ што всушност е исто, но сепак овде сакаме да пристапиме до конструкторот на објектот.
страна број: 1 2 3 4 5 << претходна страна : : следна страна >> 
 
Коментирај
автор: Анонимус
Анонимните коментари ќе бидат објавувани веднаш после нивната проверка.
За да вашиот коментар биде веднаш валиден претходно пријавете се или креирајте свој профил


напишал: Анонимус (08.01.2008 14:42:37)
А што се деструктори? Каде да прочитам за нив? Ми бара учителката у школо...
напишал: slavejovanovski (11.01.2008 08:31:26)
Официјално не постојат деструктори во Java. Тоа може да звучи чудно доколку доаѓате од C/C++ светот, но во Java виртуелната машина се грижи за контрола на меморијата.

Не постои нешто како на пример:

public void ~className();

Но, Java (C# .NET) има друг вид на метод кои навидум наликува на деструктор. Овој метод во Java е:

protected void finalize();

и е член на базичната Object класа.

Овој метод се повикува од страна на виртуелната машина во моментот кога Garbage Collector-от ја зема назад меморијата зафатена од некој објект. Најчесто овој метод се користи за да се затворат конекции до датабази, датотеки и слично.

Се надевам дека ова ќе е доволно за твојата учителка. :)
напишал: MZ (24.02.2008 18:20:55)
Мислам дека за искусните програмери се подразбира, но во случајов се работи за почетник, па да помогнам и јас малце и да напоменам дека споменатиот метод треба да се override-ува во нашата класа, пример:

protected void finalize()
{
myConnection.Close();
super.finalize();
}
напишал: Анонимус (06.04.2008 18:04:19)
Не го бива. Да беше добро немаше на конекциите да додаваат close() метод. Можеби идејата на јава е да не се грижат програмерите за меморијата, но до сега не направиле толку добра виртуелна машина. Затоа најбезбеден начин е да си направиш свој close() метод и да си го повикуваш секој пат кога кје престанеш да го користиш објектот.
напишал: igor (09.04.2008 02:06:44)
Како бре не го бива?

Хм, не сум сигурен ни дали те сваќам, какви конекции? Кон база на податоци? За што станува збор?

Или идејата ти е конекцијата сама да си се „откачи“, односно затвори откако ќе престанеш да ја користиш?
пребарување
најди
 
Форум
 
JugMK
GetJava Download Button
http://www.eclipse.org
 
 
 
 
Copyrights © 2006 - 2017 by Java.com.mk
Права и правила за користење на java.com.mk
Контакт адреса:
contact AT java.com.mk
Powered by Supernova v.0.70 beta
JavaTM и Java-базираните ознаки се трговски марки или регистрирани трговски марки на Sun Microsystems, Inc. во САД и други држави. Java.com.mk никако не соработува со Sun Microsystems, Inc.
Сите други трговски марки се сопственост на нивните сопственици.