Објектно орјентисано
програмирање
Владимир Филиповић
vladaf@matf.bg.ac.rs
Александар Картељ
kartelj@matf.bg.ac.rs
Модификатори у
програмском језику Јава
Владимир Филиповић
vladaf@matf.bg.ac.rs
Александар Картељ
kartelj@matf.bg.ac.rs
Математички факултет (^) {vladafvladaf@matf.bg.ac.,kartelj}@matf.bg.ac.rs rs 3 / 14
То су специјалне кључне речи које мењају понашање класа,
метода, променљивих или наредби увоза.
Модификатори су опциони и њихов редослед није битан.
У неким ситуацијама су имплицитно дефинисани, тј.
подразумева се њихово коришћење.
Постоји велики број модификатора у Јави:
1. модификатори контроле приступа,
2. модификатори синхронизације,
3. нативни модификатори,
4. модификатори - анотације итд.
Модификатори
Математички факултет (^) {vladafvladaf@matf.bg.ac.,kartelj}@matf.bg.ac.rs rs 4 / 14
- Постоје 4 нивоа видљивости, тзв. “4P-заштита”.
(public, package, protected, private)
- Описати повезаност модификатора са концептом
учауривања?
- public - омогућава видљивост променљиве (или метода у свим
класама (чак из различитих пакета).
public class SvimaDostupna {
public int javnaPromenljiva ;
public String niskaJavna ;
public float javniMetod () {
.........
}
}
Модификатори за контролу
видљивости, тј. приступа
Математички факултет (^) {vladafvladaf@matf.bg.ac.,kartelj}@matf.bg.ac.rs rs 5 / 14
- package - служи за сужавање видљивости променљивих и
метода на ниво пакета.
- Карактерише га непотребност навођења модификатора. То
је подразумевани ниво заштите.
public class PodrazumevanaZastita {
int PaketnaCela = 3 ;
String paketnaNiska = “Pera” ;
float metodPaketa () {
......
}
}
Модификатори за контролу
видљивости, тј. приступа (2)
Математички факултет (^) {vladafvladaf@matf.bg.ac.,kartelj}@matf.bg.ac.rs rs 6 / 14
- protected - ниво видљивости по линији наслеђивања односно на
нивоу класе и њених поткласа (директних и индиректних).
- Саопштава да је дозвољено коришћење метода и
променљивих само:
1. од стране класа истог пакета,
2. или од поткласа изван пакета
(ако класа у пакету има поткласе изван пакета).
- У пракси се заштићена поља требају пажљиво користити, јер
би свака измена довела до проблема у наслеђеним класама.
- Заштићени методи имају више смисла. То индицира да се
подкласама може веровати да ће успешно користити метод, а
да друге класе то не могу.
Модификатори за контролу
видљивости, тј. приступа (3)
Математички факултет (^) {vladafvladaf@matf.bg.ac.,kartelj}@matf.bg.ac.rs rs 7 / 14
- private - највиши ниво заштите.
- Методи и променљиве са овим модификатором само из
класе у којој су дефинисани.
public class KlasaSaPrivatnim {
private int privatnaCela ;
private float privatniMetod () {
............
}
}
Модификатори за контролу
видљивости, тј. приступа (4)
Математички факултет (^) {vladafvladaf@matf.bg.ac.,kartelj}@matf.bg.ac.rs rs 8 / 14
- Зашто треба користити приватне променљиве и методе? class Krug { int x , y , r ; ……… .. Krug ( int x , int y , int r ) { ……. } void crtaKrug () { … .. } }
- У овом примеру се може се променити вредност поља за
примерке класе Krug из ма које класе која се налази у
истом пакету у коме се налази и класа Krug.
Модификатори за контролу
видљивости, тј. приступа (5)
Математички факултет (^) {vladafvladaf@matf.bg.ac.,kartelj}@matf.bg.ac.rs rs 9 / 14
- Овде се користе приватне променљиве примерка, па је за
рад са њима потребно позвати методе за
очитавање/постављање (енг. getter/setter).
class Krug {
private int x , y , r ;
......... ..
public int getR () {
return r ;
}
public int setR ( int vred ) {
r = vred ;
crtakrug ();
drugimetod ();
return r ;
}
}
Модификатори за контролу
видљивости, тј. приступа (6)
Математички факултет (^) {vladafvladaf@matf.bg.ac.,kartelj}@matf.bg.ac.rs rs 10 / 14
Табела видљивости
Видљивост public protected package private
1. из исте класе да да да да
2. из класе у пакету да да да не
3. из било које класе да не не не
4. из поткласе ван пакета да да не не
Модификатори за контролу
видљивости, тј. приступа ( 7 )
Математички факултет (^) {vladafvladaf@matf.bg.ac.,kartelj}@matf.bg.ac.rs rs 11 / 14
- Овaј модификатор мења значење променљивих, метода, наредби
увоза и иницијализационих блокова.
- static - модификатор и његово коришћење код:
1. Променљиве – променљива везана за постојање класе;
2. Метода – метода везана за постојање класе;
3. Наредбе увоза – омогућава употребу статичких поља и
метода из наведених класе без употребе пуне квалификације.
4. Иницијализационим блоком – иницијализација статичких
поља.
Модификатор static
Математички факултет (^) {vladafvladaf@matf.bg.ac.,kartelj}@matf.bg.ac.rs rs 12 / 14
- Овaј модификатор утиче на променљиве, методе и класе
модификујући њихово значење на следећи начин:
1. Класе не могу бити наслеђене;
2. Поља не могу бити промењена након иницијализације;
3. Методе не могу бити рeдефинисане;
4. Параметри метода не могу бити мењани унутар метода.
Модификатор final
Математички факултет (^) {vladafvladaf@matf.bg.ac.,kartelj}@matf.bg.ac.rs rs 13 / 14
- Користи се за дефинисање апстрактних класа и метода.
- Класа је апстрактна ако се не могу направити конкретни објекти
тог типа, већ служи за обезбеђивање информација за поткласе.
- Детаљни опис апстрактних класа је дат у следећој презентацији. public abstract class MojaAps { int broj1 , broj2 ; ………. abstract void f1 (); }
Модификатор abstract
Математички факултет (^) {vladafvladaf@matf.bg.ac.,kartelj}@matf.bg.ac.rs rs 14 / 14