Különbség az osztály és az interfész között a Java-ban
Tartalom
- Összehasonlító táblázat
- Az osztály meghatározása
- Az interfész meghatározása
- Főbb különbségek az osztály és az interfész között a Java-ban
- Következtetés:
Az osztály és az interfész egyaránt új referencia-típusok létrehozására szolgál. Az osztály olyan mezők és módszerek gyűjteménye, amelyek a mezőkön működnek. Az interfész teljesen absztrakt módszereket alkalmaz, azaz módszereket senkivel. Az interfész szintaktikailag hasonló az osztályhoz, de nagy különbség van az osztály és az interfész között, amely egy osztály realizálható, de az interfész soha nem váltható ki. Tehát tanulmányozzunk még néhány különbséget az osztály és az interfész között az alább bemutatott összehasonlító táblázat segítségével.
- Összehasonlító táblázat
- Meghatározás
- Főbb különbségek
- Következtetés
Összehasonlító táblázat
Az összehasonlítás alapja | Osztály | Felület |
---|---|---|
Alapvető | Objektumok létrehozásához egy osztály kerül pillanatra. | Az interfész soha nem váltható ki, mivel a módszerek semmilyen műveletet nem tudnak végrehajtani a meghíváskor. |
Kulcsszó | osztály | felület |
Hozzáférés-meghatározó | Az osztály tagjai lehetnek magán, állami vagy védett. | Az interfész tagjai mindig nyilvánosak. |
Mód | Az osztály módszereit egy adott művelet végrehajtására határozzák meg. | Az interfészekben alkalmazott módszerek tisztán absztraktak. |
Végrehajtja / Extend | Egy osztály tetszőleges számú felületet valósíthat meg, és csak egy osztályt bővíthet. | Az interfész több interfészt kiterjeszthet, de egyetlen interfészt sem valósíthat meg. |
Konstruktőr | Egy osztály konstruktorokkal rendelkezhet a változók inicializálására. | Az interfésznek soha nem lehet konstruktora, mivel alig van olyan változó, amely inicializálhatja. |
Az osztály meghatározása
Az osztály a Java programozás legfontosabb szempontja, hogy osztályok nélkül nem tudsz Java programot végrehajtani. Egy osztály referencia-típusokat hoz létre, és ezeket a referencia-típusokat objektumok létrehozására használják. Az osztálynak van aláírása és teste. Az osztály aláírása tartalmazza az osztály nevét és információit, amely megmutatja, hogy az osztály örökölt-e egy másik osztályt. Az osztály testének mezői és módszerei vannak, amelyek ezeken a területeken működnek. Osztályt hoz létre egy kulcsszó segítségével osztály. Lehetővé teszi, hogy megtudjuk, hogyan kell osztályt nyilvánítani.
osztály osztály_neve {/ * mezők ... módszerek * /}
Amikor egy osztályt megvalósítunk, minden létrehozott objektum tartalmazza a mezők és módszerek másolatát. 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 az objektumok külön-külön inicializálják, az igényeknek megfelelően.
Az osztály tagjai hozzáférési meghatározókkal rendelkeznek, amelyek meghatározzák 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és-meghatározók nyilvános, magán és védett. Az osztályt egy másik osztály örökölheti a hozzáférési specifikátor használatával, amely meghatározza az alosztály (öröklő osztály) szuperosztály (öröklött osztály) tagjai láthatóságát. Így az osztály teljesíti az adatok elrejtésének és beillesztésének az objektumorientált programozás koncepcióját.
Az interfész meghatározása
Az interfész szintén szerepel a Java-ban meghatározott referenciatípusok között. Az interfész fontossága az, hogy a Java-ban az osztály csak egyetlen osztályt örökölhet. E korlátozás elkerülése érdekében a Java tervezői bevezettek egy interfész fogalmát. Az interfész szintaktikailag hasonló egy osztályhoz, de hiányzik a mezőbevallás, és az interfészen belüli módszereknek nincs megvalósítása. Az interfész kulcsszó használatával deklarálódik felület. Nézzük meg az interfész nyilatkozatát.
felület felület_neve {típus var_name = érték; type1 módszer (paraméter-lista); type2 módszer (paraméter-lista); . . }
Az interfész nem határoz meg egyetlen benne deklarált módszert sem, mivel hiányoznak a működtetéséhez szükséges mezők. Csak azért, mert egy interfészen belüli bármely módszer nem hajt végre semmilyen műveletet, a felületet soha nem lehet azonnal megvalósítani. Ha egy interfész rendelkezik bármely mezőtaggal, akkor azt deklaráláskor inicializálni kell. Az interfész soha nem tartalmaz konstruktorokat, mivel hiányzik a terepi tagok az inicializáláshoz. Tehát egy interfész csak azt határozza meg, hogy az osztálynak mit kell tennie, ahelyett, hogyan kell tennie.
A létrehozott interfészt tetszőleges számú osztály valósíthatja meg kulcsszó használatával munkagépek. De az interfészt megvalósító osztályoknak meg kell határozniuk az interfészen belüli összes módszert. Az interfész egy másik interfészt is örökölhet a használatával kiterjesztése kulcsszó. Ha egy osztály olyan felületet valósít meg, amely kiterjeszt egy másik felületet. Ezután az osztálynak meg kell határoznia a láncban megjelenő mindkét interfész módszerét. Az interfészen belüli módszereknek mindig nyilvánosaknak kell lenniük, mivel a végrehajtó osztályoknak hozzáférniük kell hozzájuk.
Főbb különbségek az osztály és az interfész között a Java-ban
- Egy osztály az objektumok létrehozásával azonnal megvalósítható. Az interfész soha nem kerül megvalósításra, mivel az interfészen belül deklarált módszerek elvontak és nem hajtanak végre semmilyen műveletet, tehát egyetlen interfész sem regenerálható.
- Az osztályt egy kulcsszó osztály használatával deklarálják. Ugyanígy, felület jön létre a kulcsszó felület használatával.
- Az osztály tagjai hozzáférési specifikációval rendelkezhetnek, például nyilvános, magán, védett. De egy interfész tagjai mindig nyilvánosak, mivel a végrehajtó osztályoknak hozzáférniük kell hozzájuk.
- Az osztályon belüli módszerek úgy vannak definiálva, hogy műveletet hajthassanak végre az osztályban deklarált mezőkön. Mivel az interfész hiányzik a mezők deklarálásában, az interfészen belüli módszerek tisztán elvont jellegűek.
- Egy osztály tetszőleges számú felületet valósíthat meg, de csak egy szuper osztályt bővíthet. Az interfész tetszőleges számú interfészt kiterjeszthet, de egyetlen interfészt sem valósíthat meg.
- Egy osztályban építők vannak meghatározva, amelyek a változó inicializálásához szükségesek. De az interfésznek nincs konstruktora, mivel nincs inicializálható mező. Az interfész mezőit csak a deklaráláskor inicializálják.
Következtetés:
Mind az osztályoknak, mind az interfészeknek saját jelentőségük van. Az osztály akkor használatos, amikor meg kell határoznunk a feladat végrehajtásának módját. Egy felületet akkor használunk, amikor tudnunk kell, hogy mi a feladat.