Чекор по чекор
Почетни чекори со 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
Објектно оријентирани концепти во Јава - Трет дел
Статични членови

Доколку се сеќаваш на примерите си изворен код кои ги споменав до сега, сигурно имаш барем еден клучен збор кој можеби ти е сеуште загадка. Всушност тој се појавува во првиот пример и во пошетокот на секоја Јава програм кој сме го напишале досега:

public static void main(String[] args) {

Во случај да сеуште не ти текнува станува збор за клучниот збор „static“. Како методите така и променливите можат да бидат декларирани како „static“ (статични). Статичните членови припаѓаат на класата, наместо на објект од класата. Пред да објаснам зошто методот „main“ се декларира како статичен ајде да разгледаме еден поедноставен случај.

Можеби ќе биде корисно во некој момент да ги знаш вкупниот број на дрва кои биле интанцирани од класата „Drvo“ во твојот програм. Поради тоа едно од решенијата би било да се креира статична особеност наречена „vkupnoDrvja“ во класата „Drvo“, и да се промени конструкторот на класата преку кој би ја покачувале вредоста на променливата „vkupnoDrvja“ за еден секој пат кога би се инстанцирало ново дрво. Потоа со користење на ново креираната метода „getVkupnoDrvja“ би можеле да проверуваме колку дрвја се инстанцирани со повик на Drvo.getVkupnoDrvja().
Еве го кодот за променетата класа „Drvo“:

public class Drvo {
    private static int vkupnoDrvja = 0;

    private int visina;

    public Drvo() {
        this(0);
    }

    public Drvo(int visina){
        vkupnoDrvja = vkupnoDrvja + 1;

        if (vidina < 0) this.visina = 0;
        else this.visina = visina;
    }
  
    public static int getVkupnoDrvja(){
        return vkupnoDrvja;
    }

    .....
    .....
    .....
}

Статичните членови се корисни во барем две ситуации:

    * Кога треба да чуваш некоја информација која се дели помеѓу членовите во некоја класа (како примерот погоре)
    * Кога нема смисла да се има повеќе од една истанца на некоја променлива или метода.



Функцијата „main“ е пример за вториот случај. Стварно не би имало смисла ни логика да има два методи кои би се викале „main“.

Друг пример за статичен член е особеноста „out“ на класата „System“ (ако ти е полесно „System.out“, го користев неговиот „println“ метод во повеќе случаи).

Не се секирај ако сега малце ти е збунувачко ова со логиката зошто се потребни статичките членови, но доколку го свати горниот пример со броењето на дрвјата, односно на инстанците од класата „Drvo“ на добар правец си.
страна број: 1 2 3 4 5 << претходна страна : : следна страна >> 
 
Коментирај
автор: Анонимус
Анонимните коментари ќе бидат објавувани веднаш после нивната проверка.
За да вашиот коментар биде веднаш валиден претходно пријавете се или креирајте свој профил


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

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

public void ~className();

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

protected void finalize();

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

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

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

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

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

Или идејата ти е конекцијата сама да си се „откачи“, односно затвори откако ќе престанеш да ја користиш?
пребарување
најди
 
Форум
 
JugMK
GetJava Download Button
http://www.eclipse.org
 
 
 
 
Copyrights © 2006 - 2024 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.
Сите други трговски марки се сопственост на нивните сопственици.