Чекор по чекор
Почетни чекори со 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
Објектно оријентирани концепти во Јава - Трет дел
прегледано:  7072
 вкупно гласови:  4
 средна оценка:  4.75
 коментари:  5
Конструктори

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

На пример класата „Drvo“, поточно декларацијата на особеноста „visina“ (која веќе треба да е декларирана како приватна и да има креирано пристапни методи за неа, од задачата од вториот дел ;)  )

private int visina = 0;

Делот „= 0“ е она што ни е од значење моментално. Зошто сите дрва да бидат со висина 0? Со користење на конструктор можеме да му дозволиме на корисникот да специфицира вредност која ќе биде иницијална висина на дрвото. Еве како би изгледало тоа:

private int visina;

public Drvo(int visina) {
    if (visina < 0) this.visina= 0;
    else this.visina= visina;
}

На прв поглед изгледа исто како и нормална метода, но сепак има две разлики:

    * Конструкторите никогаш не враќаат вредност, затоа и не се декларира податочниот тип (void, int, boolean итн.) при неговоро декларирање
    * Контрукторите секогаш имаат исто име како и класата која се инстанцира. Бидејќи ја пишуваме класата „Drvo“ конструкторот мора да се вика „Drvo“. Според конвнецијата, ова е единствено место каде што метода се пишува со почетна голема буква.


Доколку направиме дисекција на горепишаното тоа би изгледало вака: декларираме јавен конструктор кој прима еден параметар и неговата вредност ја доделува на променлива од податочен тип „integer“ именувана како „visina“. Следната линија проверува дали променливата „visina“ е помала од нула. Ако е помала од нула тогаш ја сетира вредноста за висина на дрвото на нула (несакаме дрвото да „расте“ во земја, ако беше така тогаш ќе „игравме“ со компири). Доколку е поголема од нула ја доделуваме вредноста на параметарот на нашата особеност.

Внимавај на тоа дека бидејќи имаме локална променлива „visina“ на особеноста „visina“ на моменталниот објект мораме да и се обратиме со „this.visina“. „this“ е специјална променлива во Јава која секогаш посочува кој објектот во кој се наоѓа моменталниот код кој се извршува. Доколку ова ти е малку збунувачки, секогаш можеш влезниот параметар да го прекрстиш во нешто како „novaVisina“. Тогаш нема да мораш да се обраќаш на особеноста „visina“ со помош на „this“.

Е сега откако класата „Drvo“ има конструктор кој прима параметар, мора да се специфицира вредност за истиот кога се креираат нови дрвја:

Drvo moeDrvo = new Drvo(10); //inicijalna vrednost 10
страна број: 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.
Сите други трговски марки се сопственост на нивните сопственици.