Tömbök ismétlés Osztályok Java-ban Garbage collection 4. gyakorlat Tömbök ismétlés Osztályok Java-ban Garbage collection
Tömbök ismétlés Létrehozás Inicializálás Többdimenziós tömbök
Osztályok Amikor saját osztályt írunk, annak (általában) vannak adattagjai és/vagy metódusai. Adattagok megadása [láthatóság] [static] [final] [transient] [volatile] típus változóNév Metódusok megadása [láthatóság] [static] [abstract] [final] [native] [synchronized] visszatérésiTípus metódusNév ([paraméterek]) [throws kivételLista]
Osztályok (folyt.) Példa public class Pont { // Adattagok private int x; private int y; public double tavolsag(Pont p) { double tav; // távolságot számoló kód… return tav; }
Osztályok (folyt.) Különleges metódusok Konstruktor Neve meg kell hogy egyezzen az osztály nevével Visszatérési típusa nem lehet Új objektum létrehozásakor hívódik meg. Általában az adattagok inicializálásáért felelős kódot helyezzük a törzsébe. A paraméter nélküli konstruktort default konstruktornak nevezzük, ha van legalább egy paramétere, akkor paraméteres konstruktornak.
Osztályok (folyt.) Példa: public Pont() { x = 0; y = 0; } public Pont(int xKoord, int yKoord) { x = xKoord; y = yKoord;
Osztályok (folyt.) Getter/Setter metódusok Az adattagok későbbi (konstruálás utáni) beállítására (setter) illetve lekérdezésére (getter) szolgálnak. Ezen metódusok elnevezésére vonatkozó szabályok: Getter: getAdattagNeve Setter: setAdattagNeve
Osztályok (folyt.) Példa public int getX() { return x; } public void setX(int ujX) { x = ujX;
Osztályok (folyt.) Statikus mezők és metódusok static kulcsszóval Mezők esetén azt jelenti, hogy nem rendelkezik minden objektum külön példánnyal belőle, hanem csak egy példányban van jelen a memóriában, és az összes objektum ezt használja közösen. Ha nem hozunk létre egyetlen objektumot sem, a statikus mező akkor is létezik. Elérése: OsztályNév.statikusMezőNév
Osztályok (folyt.) Példa public class Ember { public static final boolean FERFI = true; } … Ember.FERFI
Osztályok (folyt.) Konstanst úgy hozhatunk létre, hogy egy statikus mezőt a final módosítóval is ellátunk. Az ilyen mezők kezdőértéke nem változtatható meg, nevüket csupa nagy betűvel kell írni, szóhatáron aláhúzásjellel elválasztva. Példa public static final boolean FERFI = true;
Osztályok (folyt.) Ha egy metódust teszünk statikussá, akkor az meghívható lesz objektumpéldány létrehozása nélkül. Statikus metódusból csak a statikus mezőket lehet elérni. Elérése: OsztályNév.statikusMetódusNév
Osztályok (folyt.) Példa public class Ember { public static void kiirEmber(String nev, int szuletett) { System.out.print(“Az ember neve “ + nev); System.out.println(“, szuletesi datum: “ + szuletett); } … Ember.kiirEmber(“Hobi Zsolti”, 19870615);
Osztályok (folyt.) A this kulcsszó Hivatkozás az aktuális objektumra Mikor használjuk? Például, ha egy metódus formális paraméterének neve megegyezik egy attribútum nevével, akkor kénytelenek vagyunk használni Például: public Pont(int x, int y) { this.x = x; this.y = y; }
Osztályok (folyt.) A null kulcsszó Azt jelöli, hogy az adott referencia nincs beállítva semmilyen objektumra. Segítségével jelezhetjük a Java beépített szemétgyűjtőjének (Garbage Collector – gc), hogy már nem akarunk hivatkozni az objektumra, fel lehet szabadítani a számára foglalt memóriát. Példa Pont p1 = new Pont(6, 15); ... p1 = null;
Garbage collection Nem használt objektumokat töröljük a memóriából Nem tudni pontosan mikor hívódik, ha van még hely a memóriában, akkor nem lassítja feleslegesen a programot Manuálisan is hívható: System.gc();
Feladatok Példa: Plusz pontos feladatok → feladatok.txt Ember feladat megírása együtt Plusz pontos feladatok → feladatok.txt