Você está na página 1de 13

III DEO

Java, aplikacije,
apleti

1. Modifajeri (Modifikatori)
Modifajer - prefiks koji mo`e biti primenjen ( u
razli~itim kombinacijama) na metode, promenljive
pa i same klase. To su specijalne klju~ne re~i koje
menjaju pona{anje klasa,metoda ili promenljivih.
Modifajeri su opcioni i njihov redosled nije bitan.
U nekim sistuacijama su implicitno definisani, tj.
podrazumeva se njihovo kori{}enje.

Postoji veliki broj modifajera u Javi: modifajeri


kontrole pristupa, modifajeri sinhronizacije,
nativni, ...

1.1. Modifajeri za kontrolu pristupa


(vidljivosti) promenljivih i metoda.
Postoje 4 nivoa vidljivosti, tzv 4P-za{tita.
(public, package, protected i private)
Povezanost sa U~aurivanjem!
1. public - omogu}ava vidljivost promenljive (ili metoda u
svim klasama (~ak iz razli~itih paketa).
Primer:
public class SvimaDostupna{
public int javnaPromenljiva;
public String Nizovnajavna;
public float JavniMetod(){

}
}

2. package -slu`i za su`avanje vidljivosti promenljivih i


metoda. Karakteri{e ga nepotrebnost navo|enja modifajera.
To je podrazumevani nivo za{tite.

Primer: Public class PodrazumevanaZastita{


int PaketnaCela = 3;
String paketnaNiska = Pera;

float metodPaketa() { }
}
Ako se poku{a pristup elementima iz drugih paketa, nastaje
gre{ka pri kompajliranju.

3. protected - slede}i nivo vidljivosti. Reguli{e odnsos


izme|u klasa i njenih potklasa (trenutnih i budu}ih).
Ovim se saop{tava da je dozvoljeno kori{}enje metoda
i promenljivih samo od strane klasa istog paketa ili
potklasa izvan paketa (ako klasa u paketu ima
potklase izvan paketa).
4. private - najvi{i nivo za{tite. Metodi i
promenljive sa ovim modifajerom ne mogu biti
vidjeni ni iz jedne druge klase osim one u kojoj su
definisani (~ak ni iz potklasa).
Primer: public class KlasaSaPrivatnim{
private int privatnaCela;
private float privatniMetod() {

}
}

Za{to treba koristiti privatne promenljive i


metode? Neka imamo primer:
class Krig {
int x, y, r;
..
Krug(intx, int y, int r){
.
}
void crtaKrug () {
..
}
}
Mo`e se promeniti vrednost u metodu krug , ali
ne i slika na ekranu

class Krig {
private int x, y, r;
..
public int uzetir (){
return r
}
public int postavitir(int vred) {
r = vred;
crtakrug();
drugimetod();
return r
}
}
Ovde se koriste pristupni metodi za pristup privatim
promenljivima.

staitic modifajer i njegovo kori{}enje kod klasnih promenljivih i


metoda.
final - modifajer
kada se primeni na klase, ona ne mo`e imati potklase;

kada se primeni na promenljive, one su konstante;


kada se primenina metod, on ne mo`e biti predefinisan u
potklasi.

abstract -modifajer.
Koristi se za definisanje apstraktnih klasa i metoda. Klasa je
apstraktna ako nema konkretnih objekata, ve} slu`i za
obezbe|ivanje informacija za potklase (koje mogu imati objekte).
Primer: public abstract class MojaAps {
int broj1, broj2;
.
}

Abstraktni metodi u klasi su metodi sa potpisom, ali bez


implementacije. Implementacija se vr{i u potklasama.
Ako u klasi postoji bar jedan apstraktni metod, klasa
mora biti apstraktna.
Primer:
public abstract class MojaAps {
int broj;
public abstract int apmetod();
public void radinesto{
../ normalan metod
}
}
public class Konkretna extends MojaAps{
public int apmetod(){
.. // ovde naredbe metoda
}
}

2. Interfejsi
Interfejsi (kao apstraktne klase i metodi) obezbe|uju {ablone za
neko pona{anje, a koje }e druge klase koristiti. Obezbe|uju ve}u
funkcionalnost u odnosu na apstraktne klase i metode.
Ograni~enost hijerarhijske organizacije (primer).
Preko interfejsa uvodi se neki vid ograni~enog vi{estrukog
nasle|ivanja.

Interfejs obezbe|uje apstraktno pona{anje koje se dodaje bilo


kojoj klasi, a koje nije obezbe|eno preko njenih superklasa.
Interfejsi se implemntiraju u klasama.

Interfejs se pona{a svuda kao klasa (i prevodi se kao klasa), ali ne


mo`e imati instance (ne mo`e se na njega primeniti newoperator).

Interfejs sadr`i apstraktne metode i konstante (ne mo`e


sadr`ati promenljive).
Svoj iterfejs kreiramo sa:
public interface MojInterfejs {

.
}
ili
public interface DrugiInterfejs extends Prvi, Primarni {
// svi metodi su pablic i abstract

//sve promenljive su: public, static i final


}
Interfejsi se sme{taju u pakete kao i klase.

Ako za promenljive u interfejsu ne naglasimo da su


abstract, public i final, podrazumeva}e se.
Definisane interfejse implementiramo preko klasa:
class Druga extends Prva implements MojInterfejs {
..
}

1. Primer interfejsa
Vozilo.java
Zabavni.java
TestVozilo.java

Vozilo

Putnicko

Teretno

Zabavni

Auto

Rovokopac

Kamion