Osztályok 4. gyakorlat
Az osztály fogalma Az objektumok formai leírása, melyek azonos tulajdonsággal és operációkkal rendelkeznek. Osztályból objektum készítését példányosításnak nevezzük. Minden objektum pontosan egy osztály példánya.
Adattagok - metódusok Általában minden osztály rendelkezik adattagokkal, metódusokkal. A metódusok az adattagokon végeznek műveletet, ezért gyakori, hogy a paraméterlistájuk üres. Addattag megadása: [láthatóság][static][final][transient][volatile] típus változónév; Metódus megadása: [láthatóság] [static] [abstract] [final] [native] [synchronized] visszatérésitípus metódusnév ([paraméterek]) [throws kivétellista]
Láthatóságok public bárki használhatja a programon belül közvetlenül. private csak az adott osztály saját metódusai férhetnek hozzá (használhatják). protected az adott osztály metódusain kívül a származtatott osztály metódusai érhetik el.
Adattagok metódusok - Példa class Muvelet{ //adattagok private int x; private int y; private int eredmeny; //további kód public int Osszead(){ eredmeny = x + y; return eredmeny; //további kód
Különleges metódus. Konstruktor Neve meg kell hogy egyezzen az osztály nevével! Láthatósága public, de előfordulhat, hogy protected. Nem lehet visszatérési értéke! Objektum létrehozásakor hívódik meg. Feladata az inicializálás. (adattagok inicializálásért felelős kód ide helyezendő). Egy osztálynak lehet több konstruktora, ilyenkor paraméterekben kell különbözniük! A paraméter nélküli konstruktort default konstruktornak nevezzük. Ha nincs az osztálynak konstruktora, akkor a fordító létrehoz egy default konstruktort.
Konstruktor - Példa public Muvelet(){ x = 0; y = 0; public Muvelet( int xertek, int yertek ){ x = xertek; y = yertek;
Objektum létrehozása Objektum referencia: <OsztályNév> változónév; Pl: Muvelet muvelet; Objektum létrehozása: A new kulcsszóval (operátorral) tudunk objektumot létrehozni (mint a tömböknél, mivel a tömbök is objektumok). new <Konstruktor>([paraméterek]); A paraméterektől függ, hogy az osztály melyik konstruktora hívódik meg. Pl: muvelet = new Muvelet( 2, 3 );
Getter Setter metódusok Adattagok beállítására (setter) és lekérdezésére (getter) szolgálnak. Kívülről ezeken keresztül tudjuk változtatni vagy lekérdezni a private adattagok értékét. Elnevezési szabályok: Getter: getadattagneve Setter: setadattagneve
Getter Setter metódusok - Példa public int getx(){ return x; public void setx( int ertek ){ x = ertek;
Metódusok, adattagok elérése Miután létrehoztuk az objektumunkat, a metódusait, adattagjait el kell valahogy érnünk. Referencianév után ponttal (.) hivatkozhatunk az egyes metódusokra. Pl: Muvelet muvelet = new Muvelet( 2,3 ); int eredmeny = muvelet.osszead();
Metódus túlterhelés ( overloading ) Egy osztályon belül lehet több ugyanolyan nevű metódus is, ha a paraméterlistájuk különbözik ezt hívjuk túlterhelésnek (overloading). A fordító a paraméterlista szerint tesz különbséget az azonos nevű metódusok között. Pl: static double osszeg( double x, double y ){ return x + y; static double osszeg( int x, double y ){ return x + y;
Statikus adattagok, metódusok static kulcsszóval jelezzük, hogy a változó vagy metódus statikus. Objektum nélkül is léteznek, tehát nem kell ahhoz objektum, hogy használni tudjuk őket. Nem rendelkezik minden objektum külön példánnyal belőlük, csak egyetlen példányként vannak a memóriában, az összes objektum ezt a példányt tudja elérni és használni. Elérése: OsztályNév.statikusMezőNeve; OsztályNév.statikusMetódusNeve([paraméterek]);
Statikus adattagok, metódusok Statikus metódusban nem használhatunk nem statikus osztályváltozót (adattagot), mivel a statikus metódusok ( és statikus változók ) objektum létrehozás nélkül is létrejönnek, ellenben a nem statikus osztályváltozókkal. Statikus metódus csak statikus metódust hívhat.
Konstansok final kulcsszóval tudjuk jelezni, hogy egy változó konstans. Kezdő értéke nem változtatható meg. Elnevezési szabály: Csupa nagybetű, szóhatárnál aláhúzás. Pl: public static final FALSE = 0;
this Referencia, mely az aktuális objektumra mutat. this után ponttal (.) tudunk hivatkozni az aktuális objektum adattagjaira és metódusaira. Akkor használatos, mikor egy metódus paramétereinek az elnevezése megegyezik az osztály adattagjainak az elnevezésével. Megkülönböztetésre szolgál. Pl: public Muvelet( int x, int y ){ this.x = x; this.y = y;
null Referenciánál jelezhetjük, hogy nincs beállítva neki objektum (nem mutat semmire). Segítségével jelezhetjük a Garbage Collector-nak, hogy az adott objektumra nincs szükségünk. Muvelet muv = new Muvelet( 3, 4 ); muv = null;