Java (programski jezik)

Iz Vikipedije, slobodne enciklopedije
Idi na navigaciju Idi na pretragu
Java
Java logo.gif
Logo programskog jezika Java
Originalni nazivengl. Java
Izgovara sejava
Modelstrukturirani, objektno-orijentisani
Pojavio se1995.
Autor(i)Džejms Gozling
Dizajner(i)Sun Microsystems
Aktuelna verzijaJDK SE13
Tipovi promenljivihstatički, jaki, sigurni, nominalni
Implementacijemnoge
UticajiObjective-C, C++, Smalltalk, Eiffel, Mesa
Uticao naC#, D, J#, Ada 2005, ECMAscript, PHP, Scala
Operativni sistemivišeplatformski jezik
LicencaGNU-ova opšta javna licenca / Java Community Process
Veb-sajtwww.oracle.com/us/technologies/java

Java (engl. Java, izgovor: java, ∗džava) je objektno-orijentisani programski jezik, koji je razvila kompanija Sun Microsystems početkom 1990-ih godina.

Mnogi koncepti Jave su zasnovani na jeziku Oberon, Niklausa Virta, tvorca Paskala, Module i drugih jezika, i Hanspetera Mesenbeka. Izbacili su koncept modula i uveli pakete kakve danas znamo, koji se oslanjaju na fajl sistem i uveli formalno koncept klasa iz objektno-orijentisane paradigme. Osim toga, jezik ima sintaksu sličnu jezicima C i C++, ali je mnogo stroži pri prevođenju, dizajniran tako da bude nezavisan od platforme, i sa pojednostavljenim upravljanjem memorijom. Pretpostavlja se da je ovo urađeno zbog popularnosti jezika C, ali i zbog jednostavnosti nekih struktura. Prva verzija je zvanično objavljena 1995. godine.

Java je, uz Kotlin, zvanično podržan jezik za izradu mobilnih aplikacija za Android uređaje.[1]

Karakteristike Jave[uredi]

Programski jezik Java treba da bude:

  • jednostavan - da bude sistem u kome bi se lako programiralo, bez potrebe za komplikovanim uhodavanjem i koji koristi postojeći način razmišljanja. Sintaksa jezika Java je unapređena verzija sintakse C++
  • objektno orijentisan - objektno orijentisano projektovanje predstavlja tehniku programiranja fokusiranu na podatke(objekte) i na interfejse ka tim objektima
  • distribuiran - Java poseduje iscrpnu biblioteku rutina za rad sa TCP/IP protokolima, kao što su HTTP i FTP. Java aplikacije mogu da pristupaju objektima preko mreže i preko URL-a, sa podjednakom lakoćom kao da pristupaju lokalnom sistemu datoteka
  • robustan - Java je namenjena za pisanje programa koji moraju biti pouzdani na mnogo načina. Ističe se u ranoj proveri mogućih problema, kasnijoj dinamičkoj proveri(tokom izvršavanja) i eliminaciji situacija u kojima lako dolazi do pojave grešaka
  • bezbedan - Java je namenjena korišćenju u mrežnim/distribuiranim okruženjima. Prema tome, mnogo je truda uloženo u bezbednost. Omogućava konstrukciju sistema koji su zaštićeni od virusa i zlonamerne modifikacije. Od samog početka, Java je projektovana da potpuno onemogući određene vrste napada, kao što su prekoračenje izvršnog steka, pristup memoriji izvan dela dodeljenog procesu, čitanje ili upisivanje datoteka bez dozvole...
  • neutralan - kompajler stvara objektnu datoteku, čiji je format nezavisan od operativnog sistema na kome se pokreće. Kompajlirani kod se može izvršavati na mnogim procesorima, pod pretpostavkom prisustva izvršnog sistema Java. Java kompajler ostvaruje ovo tako što generiše bajtkod instrukcije, koje nemaju nikakve veze sa arhitekturom korišćenog računara, već se podjednako lako interpretiraju na svakoj mašini, a isto tako lako se prevode i u odgovarajući mašinski kod
  • prenosiv - ovde ne postoje aspekti koji su zavisni od implementacije. Veličine primitivnih tipova su fiksne, kao i njihovo ponašanje u aritmetici. Takođe, biblioteke koje su deo sistema definišu interfejse koji su prenosivi
  • interpretiran - isti Java bajtkod se može izvršavati na svakom kompjuteru za koji postoji Java interpreter. Budući da je linkovanje postepen i lakši postupak, sam razvoj može biti brži
  • performantan - mada su performanse prevedenog bajtkoda obično više nego dovoljne, postoje situacije kada su potrebne bolje performanse. Bajtkod može da bude preveden tokom izvršavanja u mašinski jezik
  • višenitan - prednosti višenitne obrade su bolji interaktivni odzivi i ponašanje u realnom vremenu
  • dinamičan - Java je projektovana tako da se prilagođava okruženju koje se stalno unapređuje. Biblioteke mogu slobodno da dodaju nove metode i polja, bez uticaja na klijente. U Javi je prilično jednostavno pronalaženje informacija prilikom izvršavanja programa.

Istorija Jave[uredi]

James Gosling i Patrick Naughton, grupa inžinjera kompanije Sun, su inicirali jezički projekat Java u junu 1991. Jezik je nazvan Hrast (engl. Oak), i bio je namenjen za programiranje kućnih elektronskih uređaja (televizora, video rekordera i sl.). Ime projekta Hrast je kasnije promenjeno u Java, po brendu Java kafe (engl. Java Coffee), koja je dobila ime po istoimenom ostrvu Java, tako da logo jezika Java prikazuje čašu vruće kafe.[2] Postoji još jedna verzija porekla imena jezika, koja se odnosi na aluziju na aparat za kafu kao primer kućnog uređaja, za koji je programski jezik prvobitno kreiran.[3] Gosling je Java dizajnirao sa istom sintaksom kao u C/C++ kako bi sistemski i aplikativni programeri lakše naučili jezik.

Sun Microsystems je prvu javnu implementaciju objavio kao Java 1.0 1996. godine. Obećavao je Write Once, Run Anywhere (WORA), obezbeđujući izvršavanje koda na popularnim platformama bez utroška vremena. Prilično bezbedan i sa sigurnosnim podešavanjima, dozvoljavao je ograničenja pristupa mreži i datotekama. Glavni veb pregledači ubrzo su ugradili mogućnost pokretanja Java apleta na veb stranicama i Java je brzo postala popularna. Artur van Hof je ponovo napisao prevodilac za Java 1.0 u Javi kako bi se strogo pridržavao specifikacije jezika Java 1.0. Sa pojavom Java 2 (prvobitno objavljen kao J2SE 1.2 u decembru 1998. - 1999.), nove verzije su imale višestruke konfiguracije izgrađene za različite tipove platformi. J2EE je uključivao tehnologije i API za poslovne aplikacije koje se obično izvršavaju u server okruženju, dok J2ME sadrži API optimizovan za mobilne aplikacije. Desktop verzija je preimenovana u J2SE. 2006. godine, u marketinške svrhe, Sun je preimenovao nove verzije J2 u Java EE, Java ME i Java SE.

Godine 1997. Sun Microsystems obratio se ISO/IEC JTC 1 uredu za standardizaciju, a kasnije Ecma International kako bi formalizovao Javu, ali se ubrzo povukao iz procesa. Java ostaje de facto standard, koji se kontroliše kroz procese Java zajednice. U jednom trenutku, Sun je većinu svojih Java implementacija učinio dostupnim bez naplate, uprkos licenciranom statusu softvera. Sun je stvarao prihod od Jave prodajom licenci za specijalizovane proizvode kao što je Java Enterprise System.

Dana 13. novembra 2006, Sun je izdavao veći deo svoje Java virtuelne mašine (JVM) kao besplatni i open-source softver (FOSS), pod uslovima navedenim u GNU General Public Licence (GPL). 8. maja 2007., Sun je završio postupak, stavljajući sav svoj JVM osnovni kod dostupan kao free software/open source distribuciju, osim malog dela koda na koji Sun nije imao autorska prava.

Sun-ov potpredsednik Rič Grin rekao je da je u pogledu Jave Sun imao idealnu ulogu evanđeliste. Nakon što je kompanija Oracle Corporation preuzela Sun Microsystems u 2009–10, Oracle se opisao kao upravitelj Java tehnologije sa velikom posvećenošću podsticanju učešća i transparentnosti zajednice. To nije sprečilo Oracle da podnese tužbu protiv Google-a ubrzo nakon toga zbog upotrebe Jave unutar Android SDK-a (pogledajte odeljak o Android-u). Java softver se izvršava na svemu, od laptopa do centara podataka, igračkih konzola do naučnih super računara. 2. aprila 2010. James Gosling podneo je ostavku u kompaniji Oracle.

U januaru 2016. Oracle je objavio da će za Java run-time okruženja proizvedena iz JDK 9 prekinuti dodatak pregledača.

Principi[uredi]

U stvaranju Java jezika oslanjalo se na pet osnovnih ciljeva:

  1. Mora biti jednostavan, objektno orijentisan i prepoznatljiv.
  2. Mora biti temeljan i siguran.
  3. Mora biti arhitektički neutralan i prenosiv.
  4. Mora da se izvršava sa visokim performansama.
  5. Mora biti interpretiran, praćen i dinamičan.

Verzije[uredi]

Od marta 2019. podržana je Java 8; Java 8 i 11 kao verzije za dugoročnu podršku (LTS). Glavne izdanja Java verzija, zajedno sa datumima njihovog objavljivanja:

  • 1991. Preteča Jave namenjena mrežnom kućnom okruženju
  • 1994. Usmerenje prema Internetu
  • 1995. Jezik Java lansiran na SunWorld konferenciji
  • 1996. Sun razvija JDK 1.0 (kodno ime Oak)
  • 1997. Pojavljuje se JDK 1.1
  • 1998. Krajem godine pojavljuje se novi JDK označen sa J2SE 1.2
  • 2000. Pojavljuje se J2SE 1.3
  • 2002. Pojavljuje se J2SE 1.4
  • 2004. Pojavljuje se J2SE 5.0 – interna oznaka J2SE 1.5
  • 2006. Sun objavljuje Java SE 6
  • 2010. Java postaje vlasništvo kompanije Oracle [4]
  • 2011. Pojavljuje se Java SE 7
  • 2014. Pojavljuje se Java SE 8
  • 2017. Pojavljuje se Java SE 9
  • 2018. Pojavljuje se Java SE 10
  • 2018. Pojavljuje se Java SE 11
  • 2019. Pojavljuje se Java SE 12
  • 2019. Pojavljuje se Java SE 13

Izvršavanje Java koda[uredi]

Java platforma, tj. Java okruženje u kom se program izvršava, dizajnirana je tako da što manje zavisi od specifičnih karakteristika konkretnog računarskog sistema.

Java se izvršava korišćenjem Java virtuelne mašine -JVM (engl. Јаva Virtual Machine) [5] - jezgro Jave, apstraktna mašina koja postoji samo u memoriji.

Java je jezik koji se prevodi i interpretira. Java izvorni kod (*.java fajl) nakon kompajliranja, kompajlerom javac, se prevodi u izvorni kod bajtkod (*.class fajl). Formirani bajtkod je isti za sve arhitekture računara i predstavlja instrukcije za Java virtuelnu mašinu. Bajtkod u Java virtuelnoj mašini, java interpretatorom - java, se dešifruje i interpretira u izvršni kod, pogodan za izvršavanje na računaru, odgovarajućem hardveru.

U zavisnosti od JVM, za isti izvorni kod možemo dobiti različite izvršne kodove, za različite platforme.

Java izvorni kod i bajtkod ostaju isti bez obzira na kojoj se platformi izvršava program -“Write once, run everywhere”.[6]

Javina prenosivost, međutim, izaziva gubitak performansi.

To je zato što se tek prilikom interpretiranja bajtkod prevodi u mašinski za konkretnu platformu. Ovo može biti problem ako se isti kod više puta interpretirana istoj platformi.

Gubitak performansi je smanjen korišćenjem Just-in-time (srp. "у право време") ili JIT kompajlera. JIT kompajler prevodi Java metode u mašinski kod za konkretnu platformu na kojoj se koristi.

Uništavanje objekata[uredi]

Uklanjanje nepotrebnih objekata iz memorije obavlja garbage collector. Ovaj proces radi nezavisno od pokrenutih programa i samostalno odlučuje koje objekte će ukloniti iz memorije. Osim uklanjanja suvišnih objekata on vrši defragmentaciju memorije. Njegovim korištenjem se programer oslobađa posla koji se odnosi na oslobađanje memorije kroz programski kod. Na ovaj način se ne mora voditi računa o destruktorima već se njihov posao izvodi automatski. Garbage collector je moguće pokrenuti i ručno.

Sintaksa[uredi]

Primer koda[uredi]

// Ако се класа зове Pozdrav, име фајла мора бити Pozdrav.java

public class Pozdrav {
    // Главној методи се предаје низ параметара унетих са командне линије

    public static void main(String[] args) {
        System.out.println("Здраво свете!");
    }
}

Identifikatori[uredi]

Identifikator služi za identifikovanje neke konstrukcije u Javi(npr. promenljivih, klasa, metoda, itd). Identifikator mora početi slovom, znakom za dolar ili crtom za podvlačenje, dok u preostalom delu identifikatora mogu da se pojave i cifre. Pošto u Javi postoji razlika između velikih i malih slova, 'Sunce' i 'sunce' su dva različita identifikatora.

Rezervisane reči[uredi]

Rezervisane reči su identifikatori koji imaju specijalnu namenu u jeziku Java i ne mogu se koristiti za imenovanje drugih entiteta(promenljivih, klasa, metoda).

Rezervisane reči jave su: abstract, boolean, break, byte, case, catch, char, class, const, continue, default, do, double, else, extends, final, finally, float, for, goto, if, implements, import, instanceof, int, interface, long, native, new, package, private, protected, public, return, short, static, strictfp, super, switch, synchronized, this, throw, throws, transient, try, void, volatile i while.

Osim ovih, rezervisane su i vrednosti: true, false i null.

Literali[uredi]

Literali u Javi su konstante primitivnog tipa ili konkretan primerak klase String.

  • Celobrojni literali u Javi mogu biti zapisani kao: dekadni, oktalni ili heksadekadni (a od verzije 7 i kao binarni).
  • Realni literali su konstante koje se zapisuju u obliku pokretne tačke. Mora sadržati bar jednu cifru i bilo decimalu, bilo eksponent. U Javi razlikujemo dva tipa realnih literala: float i double. Ukoliko je literal tipa float slovo f ili F mora se navesti na kraju literala, dok je double podrazumevani tip za realni literal, te se slovo d ili D ne mora navesti.
  • Logički literali su vrednosti "da" i "ne", odnosno "istinito" i "neistinito". U Javi se zapisuju kao true(istinito) i false(neistinito).
  • Znakovni literal je bilo koji znak, osim apostrofa i obrnute kose crte, ili eskejp sekvenca. Stringovni literal je niska takvih znakova između navodnika. Eskejp sekvence koje se pojavljuju u Javi:
   '\"  - апостроф
   '\"'  - наводник
   '\\'  - обрнута коса црта
   '\r'  - знак за повратак на почетак рада
   '\n'  - знак за прелазак у нови ред
   '\f'  - знак  за прелазак на нову страну
   '\t'  - знак табулатора
   '\b'  - знак за повратак на једно место уназад.

Separatori[uredi]

Separatori su specijalni znaci koji ne označavaju operaciju, a imaju funkciju da odvoje određene logičke celine u kodu. Za razdvajanje Java koristi nekoliko znakova:

   () (обичне заграде) - Служе за одвајање листе параметара од позива методе. Користе се и за наглашавање приоритета израза, за груписање израза у управљачким наредбама, као и за одређивање типова података при конверзији.
   {} (витичасте заграде) - Служе за ограђивање вредности аутоматски иницијализованих низова, за дефинисање блокова наредби, класа, метода, као и за дефинисање локалног опсега важења променљивих.
   [] (угласте заграде) - Користе се за издвајање вредности чланова низова и за декларисање самих низова.
   ; (тачка са запетом) - Закључује наредбу.
   , (запета) - Раздваја идентификаторе у декларацији променљиве и користи се за повезивање наредби унутар петљи.
   . (тачка) - Служи за раздвајање назива пакета од потпакета и класа, као и за раздвајање променљивих или метода од имена објеката.

Operatori[uredi]

Operatori omogućavaju operacije nad podacima. Podaci na koje se primenjuju operatori nazivaju se operandi. Prema poziciji u odnosu na operande, razlikujemo prefiksne, infiksne i postikfne operatore. Međutim, ukoliko se pomoću operatora dodeljuje vrednost ili ne, možemo da razlikujemo dve klase operatora: operatore dodele i ostale.

  • Aritmetički operatori, zajedno sa operandima i separatorima služe za formiranje aritmetičkih izraza. U aritmetičke operatore spadaju: + - * / % ++ --
  • Relacioni operatori se mogu još nazvati i operatorima poređenja i služe za poređenje vrednosti operanada. U relacione operatore spadaju: == != < > >= <=
  • Bitovni operator može biti logički ili operator pomeranja. Tu spadaju:
   &  - битовна конјукција(AND)
   ~  - битовна негација(NOT)
   |  - битовна дисјункција(OR)
   ^  - битовна ексклузивна дисјункција(XOR)
   <<  - померање (шифтовање) улево
   >>  - померање (шифтовање) удесно
   >>>  - померање (шифтовање) удесно са нулама.
  • Logički operatori se dele na:
   &&  - конјукцију 
   ||  - дисјункцију
   !  - негацију.
  • Uslovni operator se najčešće koristi u formi:
   <logički_operator>?<prvi_izraz>:<drugi_izraz>
  • Pomoću instancnog operatora se proverava da li konkretan primerak pripada nekoj klasi, pri čemu operator instanceof generiše vrednost true ako je objekat primerak navedene klase ili interfejsa, a u suprotnom daje vrednost false.
   <instancni_operator>::= instanceof
  • Operator dodele služi da dodeli vrednost nekoj promenljivoj.

Komentari[uredi]

Komentari služe da se objasne pojedina mesta u programu.

  • Jednoredni komentari obeležavaju se sa // i završavaju se na kraju reda
  • Višeredni komentari obeležavaju se sa /* i završavaju se sa */. Ovi komentari mogu se prostirati preko više redova. Ne mogu biti ugneždeni.
  • Komentari za dokumentaciju obeležavaju se sa /** i završavaju se sa */. Ovi komentari mogu se prostirati preko više redova. Ne mogu biti ugneždeni.

Beline[uredi]

Belina je znak koji nema grafički prikaz na izlaznom uređaju. Služe za međusobno razdvajanje elementarnih konstrukcija i za oblikovanje programa.

Java objekti i klase[uredi]

Klasa je skup objekata sa zajedničkim svojstvima, koji se ponašaju na isti način[7]. Klasa se sastoji od atributa i metoda.

Atributi opisuju osobine, a metode ponašanje klase.

Paket je grupa sličnih tipova klasa, interfejsa i pod-paketa.

Objekat je primerak klase. Svaki objekat ima svoj primerak svih polja atributa, koji je nezavisan od ostalih objekata, a metode su zajedničke za sve njih.

Atributima objekta se pristupa pomoću operatora tačka, npr. Pera.ime() .

Metode se pozivaju na sledeći način: Pera.jedi() .

Rezervisana reč this je "pokazivač" na trenutni objekat koji se obrađuje pri pozivu metode. Objekti su napravljeni tako da simuliraju ponašanje spoljašnjeg sveta i potpuno su određeni svojim atributima i ponašanjem.

Na primer, klasa bi bila Covek, atributi ime, prezime, a metod jedi.

Kako bi to izgledalo u Javi:

public class Object Covek{
        String ime, prezime;
	void jedi{.....}
}

Pravljenje objekata[uredi]

Svaki objekat bi trebalo da ima i svoje konstruktore. Konstruktori su ti koji definišu naš objekat i spremaju ga za korišćenje. Njim se inicijalizuju polja na neke konkretne vrednosti. Oni ne smeju da imaju povratne vrednosti i definišu se kao ImeKlase(parametri).

Primer definisanja konstruktora:

Covek(String ime, String prezime){
         this.ime = ime;
         this.prezime = prezime;	
}

Primer poziva konstruktora:

  Covek Pera = new Covek(ime, prezime);

Implicitni konstruktori su konstruktori koji se pozivaju kad se ne zada nijedan parametar pri pravljenju novog objekta, i on bi trebalo da obezbedi da se polja objekta nalaze u nekom podrazumevanom stanju. Na primer, za tačku bi bilo podrazumevano stanje da se nalazi u koordinatnom početku.

Enkapsulacija je skrivanje radnje unutar klase, jer korisnik ne mora da zna šta se dešava "ispod žita", nego samo šta dati metod radi, ili koje on sve atribute ima i čemu služe. [8]

Nasleđivanje[uredi]

Ključna reč extends se koristi za pravljenje nove klase, koja se izvodi iz neke postojeće. Postojeća klasa naziva se natklasa ili roditeljska, a nova klasa potklasa ili klasa dete.[9]

Potklase imaju više funkcionalnosti od svojih natklasa, npr. kada bismo u klasi Employee definisali klasu Manager(koristeći ključnu reč extends), klasa Manager bi enkapsulirala više podataka i imala više funkcionalnosti od svoje natklase. U klasi Manager bismo dodatno definisali npr. polje koje čuva vrednost bonusa, kao i metodu setBonus za podešavanje njegove vrednosti. Ako smo instancirali objekat klase Manager, možemo upotrebiti i metodu setBonus. Međutim, ukoliko smo instancirali objekat klase Employee, ne možemo upotrebiti metodu setBonus - ova metoda se ne nalazi među metodama koje su definisane u klasi Employee. Međutim, metode koje su definisane u klasi Employee, mogu se koristiti sa objektima klase Manager. Mada te metode nisu eksplicitno definisane u klasi Manager, one se automatski nasleđuju iz natklase Employee. Isto važi i za polja definisana u natklasi, svaki objekat klase Manager ima polja definisana u natklasi Employee. U suštini, kad se definiše potklasa izvođenjem iz njene natklase, treba samo uočiti razliku između potklase i natklase. Najopštije metode treba stavljati u natklase, a specifičnije metode, koje su više specijalizovane, treba smeštati u potklase.

Generalno, izdvajanje opšte funkcionalnosti njenim pomeranjem u natklase je uobičajeno za objektno orijentisano programiranje. Međutim, metoda klase Manager nema direktan pristup privatnim poljima natklase. Ukoliko metode klase Manager žele da pristupe tim privatnim poljima, one moraju da koriste javne metode klase Employee. Da bismo naznačili da želimo da pozovemo metodu natklase, a ne tekuće klase, koristimo specijalnu reč super.

Nasleđivanje ne treba da se zaustavi na izvođenju samo jednog nivoa klasa. Na primer, možemo imati klasu Executive koja nasleđuje klasu Manager.

Kolekcija svih klasa koje su nastale nasleđivanjem zajedničke natklase naziva se hijerarhija nasleđivanja. Činjenica da promenljiva objekta može da pokazuje na više stvarnih tipova naziva se polimorfizam.

Promenljiva tipa Employee može da se odnosi na objekat tipa Employee, ili na objekat bilo koje potklase klase Employee, kao što su Manager, Executive...

U slučaju da želimo da sprečimo da neko drugi formira potklasu od neke naše klase, u definiciji takve klase koristimo modifikator final. Slično, korišćenjem istog modifikatora možemo da učinimo neku konkretnu metodu u klasi konačnom. Modifikator final koristimo kako bismo osigurali da se ponašanje ne može promeniti u potklasi.

Dok se krećemo ka vrhu kroz hijerarhiju nasleđivanja, klase postaju sve opštije i verovatno sve apstraktnije. Klasa sa jednom ili više apstraktnih metoda mora i sama da se deklariše kao apstraktna, što se radi korišćenjem ključne reči abstract. Pored apstraktnih metoda, apstraktne klase mogu imati konkretne podatke i metode. Apstraktne metode se ponašaju kao čuvari mesta za metode, koje su implementirane u određenoj potklasi. Apstraktne metode predstavljau važan koncept u programskom jeziku Java, a na njih često možete naići unutar interfejsa.

Interfejs je referentni tip, sličan klasi, ali može sadržati samo konstante i potpise metoda. Od verzije 8 interfejsi mogu da sadrže i tela metoda.

Služe da se obezbedi neki šablon ponašanja, kojim garantujemo da objekat koji ga uključuje mora da ima dato izvršavanje navedeno u interfejsu. Klasa može da uključi više interfejsa.[10]

Primer:

interface Moveable{
 public move();//potpis metode
   }


public class Covek implements Moveable{
 .....
 move(){...}
   }

Polja u klasi je najbolje označiti kao private, dok se metode obično označavaju kao public. Sve karakteristike koje su definisane kao private nisu vidljive za druge klase. To isto važi i za potklase.

Postoje i situacije kad metodu želite da ograničite samo na potklase i tada da dopustite metodama potklase da pristupe polju natklase. Tada se polje ili metoda deklariše kao protected.

Modifikatori u Javi koji kontrolišu vidljivost:

  • private - vidljiv samo za određenu klasu
  • public - vidljiv za ceo svet
  • protected - vidljiv za određeni paket i sve potklase
  • ukoliko izostavimo modifikator, biće podrazumevano da je vidljivo u klasi i u paketu.[11]

Reference[uredi]

Spoljašnje veze[uredi]

Sun[uredi]

Alternative[uredi]

Uputstva za početnike[uredi]

Izvori[uredi]

Istorija[uredi]

Kritike[uredi]