Az osztály és az interfész közötti különbség Java-ban

author
6 minutes, 34 seconds Read

Az osztály és az interfész egyaránt új hivatkozási típusok létrehozására szolgál. Egy osztály mezők és a mezőkkel operáló metódusok gyűjteménye. Egy interfész teljesen absztrakt metódusokkal, azaz senkivel sem rendelkező metódusokkal rendelkezik. Egy interfész szintaktikailag hasonló az osztályhoz, de van egy lényeges különbség az osztály és az interfész között, hogy egy osztály példányosítható, de egy interfész soha nem példányosítható.

Tanuljunk tehát még néhány különbséget az osztály és az interfész között az alábbi összehasonlító táblázat segítségével.

Tartalom: Class Vs Interface

  1. Összehasonlító táblázat
  2. Definíció
  3. Főbb különbségek
  4. Következtetés

Összehasonlító táblázat

.

Az összehasonlítás alapja osztály interfész
Bázis Egy osztály példányosításával objektumokat hozunk létre. Egy interfészt soha nem lehet instanciálni, mivel a metódusok nem képesek semmilyen műveletet végrehajtani a meghíváskor.
Kulcsszó osztály interfész
A hozzáférési specifikáló Az osztály tagjai lehetnek privát, nyilvános vagy védett. Az interfész tagjai mindig nyilvánosak.
Módszerek Az osztály metódusai egy adott művelet végrehajtására vannak definiálva. A metódusok egy interfészben tisztán absztraktak.
Implement/Extend Egy osztály tetszőleges számú interfészt implementálhat, és csak egy osztályt bővíthet. Egy interfész több interfészt bővíthet, de nem implementálhat egyetlen interfészt sem.
Konstruktor Egy osztály rendelkezhet konstruktorokkal a változók inicializálására. Egy interfésznek soha nem lehet konstruktora, mivel alig van inicializálandó változó.

Az osztály definíciója

Az osztály a Java programozás egyik legfontosabb eleme osztályok nélkül nem lehet Java programot megvalósítani. Egy osztály referenciatípusokat hoz létre, és ezeket a referenciatípusokat objektumok létrehozására használjuk. Egy osztálynak van egy aláírása és egy teste. Az osztály szignatúrája tartalmazza az osztály nevét és azt az információt, hogy az osztály örökölt-e egy másik osztályt. Az osztály teste mezőkkel és a mezőkkel operáló metódusokkal rendelkezik. Egy osztályt a class kulcsszóval hozunk létre. Lássuk, hogyan kell egy osztályt deklarálni.

class class_name{/*fields...methods*/}

Az osztály példányosításakor minden létrehozott objektum tartalmazza a mezők és metódusok másolatát velük együtt. Az osztályon belül deklarált mezők és tagok lehetnek statikusak vagy nem statikusak. A statikus tagok értéke minden objektumnál állandó, míg a nem statikus tagokat minden objektum másképp inicializálja a saját igényeinek megfelelően.

Az osztály tagjai hozzáférési specifikátorokkal rendelkeznek, amelyek eldöntik a tagok láthatóságát és elérhetőségét a felhasználó vagy az alosztályok számára. A hozzáférési specifikátorok a public, private és protected. Egy osztály örökölhető egy másik osztálytól a hozzáférési specifikátor segítségével, amely eldönti a szuperosztály (örökölt osztály) tagjainak láthatóságát az alosztályban (öröklődő osztály). Így az osztály teljesíti az adatelrejtés és a kapszulázás fogalmát az objektumorientált programozásban.

Az interfész definíciója

A Java-ban definiált hivatkozási típusok közé tartozik az interfész is. Az interfész jelentősége abban rejlik, hogy a Java-ban egy osztály csak egyetlen osztályt örökölhet. Hogy ezt a korlátozást elkerüljék, a Java tervezői bevezették az interfész fogalmát. Egy interfész szintaktikailag hasonlít egy osztályhoz, de hiányzik belőle a mezők deklarációja, és az interfészen belüli metódusok nem rendelkeznek implementációval. Az interfész deklarálása az interface kulcsszóval történik. Nézzük meg egy interfész deklarációját.

interface interface_name {type var_name= value;type method1(parameter-list);type method2(parameter-list);..}

Egy interfész nem definiál semmilyen benne deklarált metódust, mivel nincsenek mezői, amelyekkel operálhatna. Éppen azért, mert egy interfészen belül semmilyen metódus nem végez semmilyen műveletet, egy interfész soha nem lehet példányosítani. Ha egy interfésznek van bármilyen mezőtagja, akkor azt a deklarációjukkor inicializálni kell. Egy interfész soha nem tartalmaz konstruktorokat, mivel nincsenek olyan mezőtagok, amelyeket inicializálni lehetne. Tehát egy interfész csak azt határozza meg, hogy egy osztálynak mit kell tennie, nem pedig azt, hogy hogyan kell tennie.

Az egyszer létrehozott interfészt tetszőleges számú osztály implementálhatja az implements kulcsszó segítségével. De az interfészt implementáló osztályoknak meg kell határozniuk az interfészen belüli összes metódust. Egy interfész egy másik interfészt is örökölhet az extend kulcsszó használatával. Ha egy osztály egy olyan interfészt valósít meg, amely egy másik interfész kiterjesztője. Akkor az osztálynak meg kell határoznia mindkét interfész metódusait, amelyek egy láncban jelennek meg. Az interfészen belüli metódusoknak mindig nyilvánosnak kell lenniük, mivel az őket implementáló osztályoknak el kell érniük őket.

Főbb különbségek az osztály és az interfész között Java-ban

  1. Az osztály az objektumok létrehozásával instanciálható. Egy interfész soha nem példányosítható, mivel az interfészen belül deklarált metódusok absztraktak, és nem végeznek semmilyen műveletet, így nincs értelme egyetlen interfész példányosításának sem.
  2. Az osztály deklarálása a class kulcsszóval történik. Ugyanígy egy interfész is interface kulcsszóval jön létre.
  3. Az osztály tagjai rendelkezhetnek a public, private, protected hozzáférési specifikációval. Egy interfész tagjai azonban mindig nyilvánosak, mivel az őket megvalósító osztályoknak kell hozzáférniük.
  4. Az osztályon belüli metódusok az osztályban deklarált mezőkön történő művelet végrehajtására vannak definiálva. Mivel az interfészből hiányzik a mezők deklarálása, az interfészen belüli metódusok tisztán absztraktak.
  5. Egy osztály tetszőleges számú interfészt implementálhat, de csak egy szuperosztályt bővíthet. Egy interfész tetszőleges számú interfészt bővíthet, de nem implementálhat egyetlen interfészt sem.
  6. Egy osztályon belül konstruktorok vannak definiálva, hogy a változót inicializálni lehessen. Egy interfésznek azonban nincsenek konstruktorai, mivel nincsenek inicializálandó mezők. Egy interfész mezőit csak a deklarációjukkor inicializáljuk.

Következtetés

Mind az osztályoknak, mind az interfészeknek megvan a maguk jelentősége. Egy osztályt akkor használunk, ha meg kell határoznunk, hogy a feladatot hogyan végezzük el. Egy interfészt akkor használunk, amikor tudnunk kell, hogy milyen feladatot kell elvégezni.

Similar Posts

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.