Összehasonlító táblázat
Az összehasonlítás alapja | Osztály | Felület |
---|---|---|
Alapvető | Egy osztály létrehozásra kerül az objektumok létrehozásához. | Az interfész soha nem nyújtható be, mivel a módszerek nem képesek semmilyen műveletet végrehajtani. |
Kulcsszó | osztály | felület |
Hozzáférési specifikáció | Az osztály tagjai lehetnek magán, nyilvánosak vagy védettek. | Az interfész tagjai mindig nyilvánosak. |
Mód | Egy osztály módszerei meghatározott művelet végrehajtására kerülnek meghatározásra. | A kezelőfelület módszerei pusztán elvontak. |
Végrehajtja / Extend | Az osztály bármilyen számú interfészt képes megvalósítani, és csak egy osztályt tud kiterjeszteni. | Egy interfész kiterjeszthet több interfészt, de nem képes semmilyen interfészt megvalósítani. |
Konstruktőr | Egy osztálynak lehetnek konstruktorai a változók inicializálására. | Egy interfésznek soha nem lehet konstruktora, mivel alig van változó az inicializáláshoz. |
Az osztály meghatározása
Egy osztály a Java programozás legfontosabb szempontja, osztályok nélkül nem hajthat végre egy java programot. Egy osztály referenciatípust hoz létre, és ezeket a referenciatípusokat objektumok létrehozására használják. Az osztálynak aláírása és teste van. Egy osztály aláírása az osztály nevét és információit tartalmazza, ami azt mutatja, hogy az osztály örökölt-e egy másik osztályt. Az osztály teste olyan mezőket és módszereket tartalmaz, amelyek ezeken a területeken működnek. Egy osztály egy kulcsszóosztály használatával jön létre. Lássuk, hogyan lehet egy osztályt bejelenteni.
class class_name {/ * mezők ... módszerek * /}
Amikor egy osztály azonnal megjelenik, minden létrehozott objektum a mezők és módszerek egy példányát tartalmazza velük. Az osztályon belül bejelentett mezők és tagok statikusak vagy nem statikusak lehetnek. A statikus tagok értéke állandó minden egyes objektumnál, míg a nem statikus tagok minden objektumot igény szerint inicializálják.
Az osztály tagjai hozzáférési specifikátorral rendelkeznek, amelyek meghatározzák a tagok vagy az alosztályok tagjai láthatóságát és hozzáférhetőségét. A hozzáférési jellemzők nyilvánosak, privátak és védettek. Egy osztályt egy másik osztály örökölhet a hozzáférési specifikáció használatával, amely meghatározza a szuperklaszt tagjai (öröklött osztály) láthatóságát egy alosztályban (öröklődő osztály). Így az osztály megfelel az objektumorientált programozásban az adatok elrejtésének és a kapszulázás fogalmának.
Az interfész meghatározása
Egy interfész a Java-ban definiált referenciatípusok közé tartozik. Egy interfész fontossága, hogy Java-ban egy osztály csak egyetlen osztályt örökölhet. Ennek a korlátozásnak a elkerülése érdekében a Java tervezői bemutatták az interfész fogalmát. Egy interfész szintaktikailag hasonlít egy osztályhoz, de hiányzik a terepi nyilatkozatban, és az interfészen belüli módszereknek nincs végrehajtása. Egy felületet egy kulcsszó interfész használatával jelentenek be. Nézzük meg a felület deklarációját.
interface interface_name {type var_name = érték; típusú módszer1 (paraméterlista); típusú módszer2 (paraméter-lista); . . }
Egy interfész nem definiál semmilyen módszert, amely benne van, mert hiányzik a mezőkben a működéshez. Csak azért, mert az interfészen belüli bármely módszer nem hajt végre semmilyen műveletet, az interfész soha nem lesz azonnal elérhető. Ha egy felületen bármilyen mezőtag van, akkor azt a nyilatkozat benyújtásakor inicializálni kell. Az interfész soha nem tartalmaz konstruktort, mivel hiányzik a terepi tagok az inicializáláshoz. Tehát egy interfész csak azt határozza meg, hogy mit kell tennie az osztálynak, és nem kell, hogy mit tegyen.
A létrehozott interfész bármilyen kulcsszóval megvalósítható kulcsszavakat használva. Az interfészeket végrehajtó osztályoknak azonban meg kell határozniuk az interfészen belüli összes módszert. Az interfész egy másik felületet is örökölhet a kiterjesztett kulcsszó használatával. Ha egy osztály olyan felületet valósít meg, amely egy másik interfészt kiterjeszt. Ekkor egy osztálynak meg kell határoznia mind a láncban megjelenő interfészek módszereit. Az interfészen belüli módszereknek mindig nyilvánosnak kell lenniük, mivel azokat az azokat végrehajtó osztályokhoz kell hozzáférni.
Az osztály és az interfész közötti különbségek a Java-ban
- Az osztályokat az objektumok létrehozásával lehet előállítani. Az interfész soha nem jelenik meg, mivel az interfészen belül bejelentett módszerek elvontak, és nem hajtanak végre semmilyen műveletet, így semmilyen interfész nem használható.
- Egy osztályt egy kulcsszóosztály használatával jelentenek be. Hasonlóképpen, egy interfész jön létre egy kulcsszó interfész használatával.
- Az osztály tagjai rendelkezhetnek a hozzáférési jellemzőkkel, mint például az állami, magán, védett. Az interfész tagjai azonban mindig nyilvánosak, mivel azokat az őket végrehajtó osztályokhoz kell hozzáférni.
- Az osztályon belüli módszerek úgy vannak definiálva, hogy egy műveletet hajtsanak végre az osztályban bejelentett mezőkön. Mivel az interfész hiányzik a mezők deklarálásában, az interfészen belüli módszerek pusztán elvontak.
- Egy osztály bármilyen számú interfészt képes megvalósítani, de csak egy szuperosztályt tud kiterjeszteni. Egy interfész kiterjeszthet bármilyen számú interfészt, de nem tud semmilyen interfészt megvalósítani.
- Egy osztályon belül vannak olyan konstruktorok, amelyek a változót inicializálják. Azonban egy interfésznek nincsenek konstruktorai, mivel nincsenek inicializálandó mezők. Egy interfész mezőket csak a nyilatkozatuk idején inicializálják.
Következtetés:
Mind az osztályok, mind a felületek saját jelentőséggel bírnak. Egy osztályt használunk, amikor meg kell határoznunk, hogy a feladat hogyan történjen. Egy interfészt használunk, ha tudnunk kell, hogy milyen feladatot kell elvégezni.