Java (programski jezik): razlika između inačica

Izvor: Wikipedija
Izbrisani sadržaj Dodani sadržaj
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

Vanjske poveznice