Végrehajtások vs kiterjesztések
Az Implements és az Extends két kulcsszó található meg a Java programozási nyelvben, amely lehetőséget nyújt a hozzáadott funkcionalitás új osztályba történő átvitelére. Az Implements kulcsszót kifejezetten egy interfész megvalósításához használják, míg az Extends kulcsszót egy (szuper) osztály örökléséhez. Felhívjuk figyelmét, hogy az öröklődés és az interfészek fogalmai a legtöbb objektumorientált programozási nyelvben, például a C # és a VB. NET-ben megtalálhatók, de eltérő szintaxist vagy kulcsszavakat kínálnak ezeknek a fogalmaknak az alkalmazásához. Ez a cikk csak a Java-ban definiált kulcsszavak végrehajtására és kiterjesztésére összpontosít.
Kiterjeszti
Az Extends kulcsszó az öröklés fogalmának megvalósítására szolgál a Java programozási nyelvben. Az öröklés lényegében biztosítja a kód újrafelhasználását azáltal, hogy lehetővé teszi egy meglévő osztály tulajdonságainak és viselkedésének kibővítését egy újonnan definiált osztály által. Amikor egy új alosztály (vagy származtatott osztály) kiterjeszti a szuper osztályt (vagy szülőosztályt), akkor az alosztály örökli a szuper osztály összes attribútumát és módszerét. Az alosztály opcionálisan felülírhatja a szülőosztálytól örökölt viselkedést (új vagy kibővített funkcionalitást biztosít a módszereknek). Egy alosztály nem bővíthet több szuper osztályt a Java-ban. Ezért nem használhatja a kiterjesztéseket többszörös örökléshez. Többszörös örökléshez interfészeket kell használnia az alábbiakban leírtak szerint.
Végrehajtások
A Java programozási nyelven végrehajtott kulcsszót egy interfész osztály általi megvalósításához használják. A Java felület egy elvont típus, amelyet egy olyan szerződés megadására használnak, amelyet osztályoknak kell végrehajtaniuk, amelyek ezt a felületet valósítják meg. Az interfész általában csak metódus aláírásokat és állandó deklarációkat tartalmaz. Minden interfésznek, amely egy adott interfészt megvalósít, az összes interfészben definiált módszert végre kell hajtania, vagy absztrakt osztályként kell deklarálni. A Java-ban az objektum-hivatkozás típusa interfész-típusként definiálható. Ennek az objektumnak azonban nullának kell lennie, vagy tartalmaznia kell egy osztály objektumát, amely megvalósítja az adott interfészt. Az Implements kulcsszó használatával a Java-ban több interfészt is megvalósíthat egyetlen osztályban. Egy interfész nem valósíthat meg másik interfészt. Az interfész azonban kiterjesztheti az osztályt.
Különbség a megvalósítás és a kiterjesztés között
Bár az Implements és az Extends két kulcsszó, amely mechanizmust biztosít az attribútumok és viselkedés örökléséhez egy osztály számára a Java programozási nyelven, ezeket két különböző célra használják. Az Implements kulcsszót az osztály egy adott felület megvalósításához használja, míg az Extends kulcsszót egy alosztály kiterjesztéséhez egy szuper osztályból. Amikor egy osztály interfészt valósít meg, akkor ennek az osztálynak végre kell hajtania az interfészben definiált összes módszert, de amikor egy alosztály kiterjeszti a szuper osztályt, felülírhatja vagy nem írhatja felül a szülő osztályba tartozó módszereket. Végül egy másik kulcsfontosságú különbség az Implements és az Extends között az, hogy egy osztály több interfészt is megvalósíthat, de csak egy szuper osztályból terjedhet ki a Java-ban. Általában az eszközök (interfészek) használatát tartják kedvezőbbnek az Extends (öröklés) használatához képest,több okból, mint például a nagyobb rugalmasság és a kapcsolás minimalizálásának képessége. Ezért a gyakorlatban az interfészre való programozás előnyösebb, mint az alaposztályoktól való kiterjesztés.