1.4. Még egyszer a HelloWorld programról

Ezen az egyszerű példán áttekintjük a nyelv legalapvetőbb szabályait.

1.4.4 Osztályok és objektumok használata

A példaalkalmazásunk egy nagyon egyszerű Java program, ezért nincs szüksége arra, hogy más osztályokat alkalmazzunk, a képernyőre írást kivéve. Összetettebb programok használni fognak más segítő osztályokat.

A HelloWorld alkalmazás egyedül a System osztályt használja. Ez az osztály rendszer-független hozzáférést tesz lehetővé a rendszerfüggő szolgáltatásokhoz.

Példánkban egy osztályváltozó (out) példány metódusát (println) hívjuk meg.

Osztálymetódusok és változók használata

A System.out a System osztály out változójának a teljes neve. (A System osztályból soha nem fog példányosítani az alkalmazásunk, csupán az osztály nevével tudunk hivatkozni a tagjaira. Ez azért van, mert az out osztályváltozó (static), és az osztályhoz van kapcsolva, nem egy példányhoz.

Példánymetódusok és változók használata

Azokat a metódusokat és változókat, amelyek nem az osztályhoz, hanem egy konkrét objektumpéldányhoz vannak kapcsolva, példánymetódusoknak vagy példányváltozóknak nevezzük.

Az out osztályváltozó, a PrintStream osztály egy példányára hivatkozik, és megvalósítja a standard kimenetet. Amikor a System osztály betöltődik, a PrintStream osztály példánya jön létre, és System.out változó néven hivatkozhatunk rá. Most már van egy példányunk, meg tudjuk hívni a példánymetódusát:

System.out.println("Hello World!");

Ahogy látszik, a példánymetódusok és változók használata hasonló az osztálymetódusok és változók működéséhez.

A Java fordító megengedi egy lépésben a többszörös hivatkozást:

System.out.println("Hello World!");

1.4.1 Megjegyzések a Java nyelvben

/*
* A HelloWordApp program kiírja a köszöntő szöveget
*/
public class HelloWorldApp {
    public static void main(String[] args) {
        // Kiírja: "Hello World!"
        System.out.println("Hello World!");
    }
}

A Java nyelv a megjegyzések három típusát támogatja. Hagyományos (C stílusú) megjegyzés:

/* szöveg */

A fordító a begépelt szöveget figyelmen kívül hagyja a /*-tól a */-ig.

/** dokumentáció */

Ez egy dokumentációs megjegyzés, a fordító figyelmen kívül hagyja, mint az előző típust is, de a javadoc eszköz (bin\javadoc.exe) segítségével automatikusan lehet generálni hypertext (HTML) dokumentációt, ami felhasználja a dokumentációs megjegyzéseket is.

Megjegyzés: a letölthető Java dokumentáció is ez alapján készült.

// szöveg

A fordító figyelmen kívül hagyja a sort a //-től a sor végéig.

1.4.2 Osztálydefiníció

A következő kód mutatja az osztálydefiníciós blokkot.

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello World!");
    }
}

Az osztály (class) alapvető építőeleme az objektumorientált nyelveknek. Az osztály az adatok és viselkedések összességéből álló példányok sablonját adja meg. Amikor az osztályból példányt hozunk létre, akkor tulajdonképpen egy olyan objektum jön létre, amelyik úgy épül fel, és úgy viselkedik, mint az osztály egyéb példányai.

Az adatok az objektumpéldányok változóiként írhatók le, a viselkedések pedig a metódusokkal.

A valós életből egy hagyományos példa a téglalap osztály. Az osztály tartalmaz változókat a pozíció, valamint a szélesség és magasság leírására, és tartalmaz metódust a terület kiszámítására.

A Java nyelvben a legegyszerűbb osztálydefiníció a következő:

class name {
}

A class kulcsszóval és az osztály nevével kezdődik az osztálydefiníció, majd kapcsos-zárójelek között változók és metódusok következnek. A korábbi példa alkalmazásunkban nincs változó, és csak egyetlen metódus van main néven.

1.4.3 A main metódus

Minden Java alkalmazásnak tartalmaznia kell main metódust a következő deklarációval:

public static void main(String[] args)

A main metódus deklarációja három módosítót tartalmaz:

  • public: jelzi, hogy a metódust más osztálybeli objektumokból is meg lehet hívni
  • static: jelzi, hogy a main osztálymetódus
  • void: jelzi, hogy a metódusnak nincs visszatérési értéke

Hogyan hívódik meg a main metódus?

A Java nyelvben a main metódus hasonló a C nyelv main függvényéhez. Amikor a Java értelmező végrehajt egy alkalmazást, először meghívja az osztály main metódusát. Az alkalmazásunk további metódusait (közvetlenül vagy közvetve) a main fogja meghívni. Ha main nélkül próbálunk egy alkalmazást futtatni, az értelmező megtagadja a végrehajtást, és hibaüzenetet kapunk.

Megjegyzés: A main függvényre csak hagyományos alkalmazások esetén van szükség. Beágyazott Java program (applet, midlet, servlet) esetén a program az őt tartalmazó futtatókörnyezet (böngésző, szervlet konténer) speciális közreműködésével fog futni.

A main metódus paramétere

A main metódusnak egy paramétere van, amely sztringek tömbje. Ez a tömb a parancssori paramétereket tartalmazza. A példaprogramunkban nem foglalkoztunk az esetleges parancssori paraméterekkel.

Megjegyzés: A C nyelvtől eltérően az args tömb nem tartalmazza a program nevét. Ez ugyanis az önelemzés (reflection) módszerével könnyen megállapítható. Másrészt a Java nyelvben a tömb objektum, tudja a méretét, így nincs szükség további paraméterre.