Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

Osztályok Garbage collection.  általában minden osztálynak vannak adattagjai és/vagy metódusai ◦ adattagok megadása:  [láthatóság] [static] [final]

Hasonló előadás


Az előadások a következő témára: "Osztályok Garbage collection.  általában minden osztálynak vannak adattagjai és/vagy metódusai ◦ adattagok megadása:  [láthatóság] [static] [final]"— Előadás másolata:

1 Osztályok Garbage collection

2

3  általában minden osztálynak 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]

4 public class Alma{ private int tomeg; private String szin; public void leesik(){ System.out.println(„Potty!”); }  ezt így nem tudom futtatni, mert nincs benne main függvény! osztálynév: mindig nagy kezdőbetűvel! az osztály attribútumai az osztály metódusa

5 public class Program{ public static void main(String[] args){ Alma a = new Alma(); a.leesik(); }  1 fájlba általában 1 osztályt írunk (public class-ból pedig szigorúan csak 1 lehet!) meghívódik a konstruktor meghívódik az „a” objektum leesik metódusa

6 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; }

7  az adattagok és a metódusok láthatóságát korlátozni kell ◦ az OO egyik fontos eleme az implementáció elrejtése: a használó használhatja anélkül, hogy pontosan ismerné, mi van benne  hogy ki mit érhet el, azt a láthatóság beállításával szabhatjuk meg  ha nem adunk meg láthatóságot, az alapértelmezett a package private/”friendly” ◦ ez csomagon belül public, egyébként private ◦ nincsen kulcsszava!

8  a láthatóság lehet még: ◦ public: mindenkinek mindent megenged ◦ private: csak az az osztály használhatja, amiben létrehozták  az adattagok általában private láthatóságúak ◦ protected: az adott osztály és annak gyerekosztályai használhatják  a main függvény mindig public (különben a futtató környezet sem férne hozzá)

9  különleges metódus ◦ garantálja az inicializálást az objektum létrejöttekor  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  általában public láthatóságú

10  ha a konstruktornak nincsen paramétere, akkor default konstruktornak nevezzük (ellenkező esetben paraméteres konstruktornak) ◦ alapértelmezett beállításokkal rendelkező objektum létrehozására használjuk  ha semmilyen konstruktort nem készítünk, akkor a fordító készít egy default-ot ◦ ha viszont akár paraméteres, akár pataméter nélküli konstruktort készítünk, akkor nem jön létre default

11  Default: public Pont() { x = 0; y = 0; }  Paraméteres: public Pont(int xKoord, int yKoord) { x = xKoord; y = yKoord; }

12  operáció kiterjesztése/overloading: ugyanaz a neve, de más a paraméterlista ◦ pl. a konstruktorok esetén ◦ de nemcsak konstruktorokat lehet kiterjeszteni, pl.: public void kortRajzol(){…}; public void kortRajzol(int sugar){…}; public void kortRajzol(int sugar, int x, int y){…};

13  Adattag esetén: ugyanazon a helyen tárolódik az összes példány  ugyanaz lesz az adattag értéke bármely objektumpéldány esetén ◦ Pl.: Alma osztály adattagja legyen: private static int tomeg;  minden Alma típusú objektum tömege ugyanannyi lesz ◦ a static adattag objektumpéldány nélkül is létezik

14  Metódus esetén: nem kell objektumpéldányt létrehozni ahhoz, hogy meg tudjuk hívni  Pl.: public static void main(), Integer.parseInt()  nem lehet felüldefiniálni!  Statikus környezetből csak statikus adattagok érhetők el

15  adattag esetén: nem változtathatja meg az értékét (adnunk kell neki kezdőértéket!)  Pl.: private static final int tomeg = 10;  metódusok esetén: gyerekosztályban nem lehet felüldefiniálni  Pl.: public final leesik(){…}  minden private metódus impliciten final

16  osztály esetén: nem lehet gyerekosztálya  Pl.: final class Alma{…}  minden metódusa impliciten final  nem primitív típusra használva nem az objektum lesz konstans, hanem a referencia

17  valódi konstans létrehozása: static és final kulcsszavakkal ◦ kezdőértékük nem változtatható meg ◦ nevüket csupa nagy betűvel kell írni, szóhatáron aláhúzásjellel elválasztva ◦ Pl.: public static final int TOMEG = 10;  elérése: public class Ember { public static final boolean FERFI = true; } … //elérés az osztályon kívülről: Ember.FERFI

18 az adattagok későbbi (konstruálás utáni) beállítására (setter) illetve lekérdezésére (getter) szolgálnak elnevezésre vonatkozó szabályok: getter: getAdattagNeve setter: setAdattagNeve

19  az Alma osztály tömeg adattagjához tartozó getter és setter: public int getTomeg(){ return tomeg; } public void setTomeg(int ujTomeg){ tomeg = ujTomeg; }

20  A Kutya osztály fajtiszta adattagjához tartozó getter és setter (az adattag logikai típusú): public boolean isFajtiszta(){ return fajtiszta; } public void setFajtiszta(boolean fajtiszta){ this.fajtiszta = fajtiszta; }

21  hivatkozás az aktuális objektumra  mikor használjuk? ◦ ha egy metódus formális paraméterének neve megegyezik egy attribútum nevével ◦ Pl.: public Pont(int x, int y) { this.x = x; this.y = y; }

22  Objektumok élete Javában: ◦ heap-en keletkeznek (ellentétben a primitív típusokkal) ◦ létrehozás (new kulcsszó) ◦ Felszabadítás: automatikus, a garbage collector (szemétgyűjtő) végzi  null kulcsszó: azt jelöli, hogy az adott referencia nincs beállítva semmilyen objektumra

23 Pont p1 = new Pont(6, 15); Pont p2 = new Pont();... p1 = null; … P2 = null;

24  egységbezárás és információ elrejtése (absztrakt adattípus) ◦ adatok és a rajtuk végzett műveletek egységbezárása  osztályok írása  öröklődés  polimorfizmus (többalakúság)

25  Ember.java (pub)  Alma.java (honlapom)  PrivatEmber.java (pub, 5. hétnél)  PEMain.java (pub, 5. hétnél)

26  pub: feladat.txt (4. gyakorlat könyvtára)

27  szerda éjfélig küldhető el 2 pluszpontért nekem e-mailben  feladat: ◦ Írj olyan osztályt, ami egy szobát reprezentál, a szobáról legyen eltárolva a területe és a belmagassága. ◦ Írj paraméteres konstruktort, ami a mezőket inicializálja. ◦ Írj getter és setter metódusokat az adattagokhoz. ◦ Írj az órai minta alapján „info” metódust a Szoba osztályhoz. ◦ Írj újabb osztályt, ami futtatható, és a parancssori paramétereknek megfelelően létrehoz egy objektumot a Szoba osztályból.

28  Pl.: java Szoba 15 2  15 m 2 területű, 2 m belmagasságú szobát hozunk létre ◦ Emellett a futtatható osztályban hozz létre egy „lakas” nevű tömböt is, ami 10 szobát tartalmaz  a 10 szoba területe egy véletlen szám 5 és 15 között, a belmagasságuk pedig 50-50% eséllyel 2 ill. 3 méter ◦ A létrehozott Szoba objektumok jellemzőit az „info” metódus segítségével írasd ki a konzolra.


Letölteni ppt "Osztályok Garbage collection.  általában minden osztálynak vannak adattagjai és/vagy metódusai ◦ adattagok megadása:  [láthatóság] [static] [final]"

Hasonló előadás


Google Hirdetések