Java (programski jezik): razlika između inačica
dopuna |
+dopuna |
||
Redak 49: | Redak 49: | ||
==== Modifikatori razine pristupa ==== |
==== Modifikatori razine pristupa ==== |
||
Svaka klasa i njezine metode imaju definirane razine pristupa, koje ograničavaju tko ih sve smije pozvati i tko ima pristup njihovim [[Varijabla|varijablama]] (u primjeru ključna riječ {{Mono|public}}. |
|||
{| class="wikitable" |
{| class="wikitable" |
||
|+ |
|+ |
||
Redak 88: | Redak 89: | ||
| - |
| - |
||
|} |
|} |
||
Klase zadano trebaju biti vezane za objekte (klasa definira tip objekta), i samo se putem objekta mogu pozvati varijable i metode neke klase, na primjer: <syntaxhighlight lang="java"> |
|||
public class mojaKlasa { |
|||
int x = 5; |
|||
public static void main(String[] args) { |
|||
mojaKlasa mojObjekt = new mojaKlasa(); |
|||
System.out.println(mojaKlasa.x); //pogrešno |
|||
System.out.println(mojObjekt.x); //ispravno - ispisuje 5 |
|||
} |
|||
} |
|||
</syntaxhighlight>Ključna riječ {{Mono|static}} ispred klase označava da se ta klasa ne treba instancirati, odn. ne treba biti vezana za objekt kako bi se pozvala: |
|||
<br /><syntaxhighlight lang="java"> |
|||
public static class mojaKlasa { //statička klasa |
|||
static int x = 5; //statička varijabla |
|||
public static void main(String[] args) { |
|||
System.out.println(mojaKlasa.x); //ovo je sada u redu |
|||
} |
|||
} |
|||
</syntaxhighlight>Statičke metode ne mogu pristupiti ni jednom članu klase koji također nije statičan. |
|||
== Izvori == |
== Izvori == |
Inačica od 13. lipnja 2020. u 00:45
Java je objektno orijentirani programski jezik koji su razvili James Gosling, Patrick Naughton i drugi inženjeri u tvrtci Sun Microsystems. Razvoj je počeo 1991, kao dio projekta Green, a objavljen je u studenom 1995.
Tvrtka Sun posjeduje trademark na ime Java, ali samo okruženje je moguće bez plaćanja skinuti sa Sunovih internet poslužitelja.
Velika prednost u odnosu na većinu dotadašnjih programskih jezika je to što se programi pisani u Javi mogu izvoditi bez preinaka na svim operativnim sustavima za koje postoji JVM (Java Virtual Machine), dok je klasične programe pisane primjerice u C-u potrebno prilagođavati platformi(Operacijskom sustavu) na kojem se izvode.
Time i bogatim skupom klasa za rad s mrežnim komunikacijama u jednom trenutku je Java bila najbolji izbor za široku lepezu mogućih aplikacija. Microsoft je stoga razvio svoj C# i .NET platformu kao odgovor na open source alternative.
Java je jedan od najkorištenijih programskih jezika. Procjene i izvješća o broju korisnika kreću se od gotovo 7 do preko 10 milijuna.[1][2][3]
Na današnjem tržištu, Java se koristi široko i dosljedno tamo gdje preteže brzina razvoja programskog sustava nad zahtjevima do brzine rada programa. Iako inspirirana jezikom C, Java pruža bolji stupanj sigurnosti i pouzdanosti zahvaljujući VM-u i hermetički zatvorenom okolišu u kome svaki program operira: na Javi se brže razvija program s manje pogrešaka.
Upravo zbog toga je popularna za razvoj programa na mobilnim telefonima i kod financijskih kompanija. Javlja se kao osnovni jezik za programiranje Googleovog sustava Android.
Sintaksa jezika
Javina sintaksa je slična sintaksi C++-a. Sav kod se piše u klasama, a svaki podatak je objekt - uz iznimku primitivnih tipova podataka (cijeli i decimalni brojevi, boolean vrijednosti i znakovi).
Za razliku od C++-a, java ne podržava preopterećivanje operatora (ad-hoc polimorfizam). Također ne podržava višestruko nasljeđivanje klasa (ali dopušta višestruko nasljeđivanje sučelja). Uz dva tipa komentara korištena u C++-u (// ... za jednolinijski i /* ... */ za višelinijski kod), java uvodi i tzv. Javadoc komentare (/** ... */) koji dopuštaju pisanje dokumentacije za klase i metode.
Primjer Javadoc dokumentacije za klasu:
/**
* Objašnjenje koda klase
* može se protezati kroz više linija. *
* @author Ivan Horvat ** definira autora ove klase
* @version 1.0 ** definira inačicu ovog koda
* @since 2014-03-31 ** broj inačice u kojoj je prvi put
* ** uvedena ova funkcionalnost
*/
Javadoc dokumentacija za metode ima još niz dodatnih parametara, na primjer:
/**
* Kao primjer ćemo koristiti metodu koja prima dva broja
* i vraća njihov zbroj
* @param brojA Ovo je prvi parametar metode
* @param brojB Ovo je drugi parametar metode
* @return int Metoda vraća cjelobrojni zbroj dva broja
* @exception IOException iznimka pri unosu vrijednosti koje nisu brojevi
* @see IOException ** poveznica na stranicu o iznimci
*/
Neki programi mogu automatski generirati dokumentaciju za program iz Javadoc komentara.
Primjer "Hello world!" programa
public class HelloWorldApp {
public static void main(String[] args) {
System.out.println("Hello World!"); // ispisuje string u konzolu
}
}
Datoteke izvornog koda moraju biti imenovane prema javnoj klasi koju sadrže, uz ekstenziju .java (u našem slučaju HelloWorldApp.java). Ta će se datoteka kompajlirati u bytecode ekstenzije .class, što će dopustiti pokretanje koda. Moguće je imati samo jednu javnu (public) klasu u datoteci. Sve klase koje nisu javne mogu biti spremljene u bilo kojoj .java datoteci, no kompajlirat će se po jedna .class datoteka za svaku klasu, istog imena kao i klasa. Anonimne klase dobit će spojeni naziv njihove roditeljske klase, znaka $ i cijelog broja.
Modifikatori razine pristupa
Svaka klasa i njezine metode imaju definirane razine pristupa, koje ograničavaju tko ih sve smije pozvati i tko ima pristup njihovim varijablama (u primjeru ključna riječ public.
Klasa | Paket | Naslijeđena klasa
(isti paket) |
Naslijeđena klasa
(drugi paket) |
Ostalo | |
---|---|---|---|---|---|
public | ima pristup | ima pristup | ima pristup | ima pristup | ima pristup |
protected | ima pristup | ima pristup | ima pristup | ima pristup | - |
nema modifikator | ima pristup | ima pristup | ima pristup | - | - |
private | ima pristup | - | - | - | - |
Klase zadano trebaju biti vezane za objekte (klasa definira tip objekta), i samo se putem objekta mogu pozvati varijable i metode neke klase, na primjer:
public class mojaKlasa {
int x = 5;
public static void main(String[] args) {
mojaKlasa mojObjekt = new mojaKlasa();
System.out.println(mojaKlasa.x); //pogrešno
System.out.println(mojObjekt.x); //ispravno - ispisuje 5
}
}
Ključna riječ static ispred klase označava da se ta klasa ne treba instancirati, odn. ne treba biti vezana za objekt kako bi se pozvala:
public static class mojaKlasa { //statička klasa
static int x = 5; //statička varijabla
public static void main(String[] args) {
System.out.println(mojaKlasa.x); //ovo je sada u redu
}
}
Statičke metode ne mogu pristupiti ni jednom članu klase koji također nije statičan.
Izvori
- ↑ (en.) Plumbr.eu: How many Java developers are there in the world? July 18, 2012, by Priit Potter, pristupljeno 9. siječnja 2013.
- ↑ (en.) LangPop.com: Programming Language Popularity Arhivirana inačica izvorne stranice od 3. rujna 2018. (Wayback Machine), pristupljeno 9. siječnja 2013.
- ↑ (en.) TIOBE: Programming Community Index for January 2013, pristupljeno 9. siječnja 2013.