Az absztrakt osztályt és az interfészt elsősorban az absztrakcióhoz használják, azonban nagyon különböznek egymástól. Mindkettő a Java alapvető része, de megvan a saját alkalmazásuk. Bár mindkét kifejezés szinonimák lehet egymással, nem használhatók felcserélhetően.
Jelentős különbségek vannak a kettő között. Míg az interfész módszer alapértelmezés szerint elvont, az absztrakt tartalmazhat absztrakt és nem absztrakt módszereket is. Nos, mivel a Java 8, az interfészeknek módszeres megvalósításuk is van, és statikus és alapértelmezett módszereik is lehetnek a Java-ban. Vizsgáljuk meg részletesen a kettő közötti különbséget.
A Java absztrakt osztálya absztraktnak nyilvánított osztály - tartalmazhat vagy nem tartalmaz absztrakt módszereket. Nagyon hasonlít a Java interfészre, kivéve azt a tényt, hogy tartalmazhat alapértelmezett módszer megvalósítást. Az objektum-orientált programozáshoz hasonlóan a Java-ban absztrakciót elvont osztályok és interfészek segítségével érik el. A Java-ban az absztrakció a lényegtelen részletek elrejtését jelenti a felhasználótól, hogy csak az alapvető részletekre összpontosítson a hatékonyság növelése és ezáltal a komplexitás csökkentése érdekében. Az „elvont” kulcsszó absztrakt osztály létrehozására szolgál, közvetlenül az osztály kulcsszava előtt az osztálynyilatkozatban.
Egy absztrakt osztály tartalmazhat vagy nem tartalmazhat absztrakciós módszereket (módszerek test nélkül), de ha az osztálynak legalább egy absztrakciós módszere van, akkor azt elvontnak kell nyilvánítani. A nem absztrakt módszerek azonban csak absztrakt osztályokban is használhatók, de csak az alapértelmezett viselkedés megvalósításához. Az absztrakt osztály módszerei hozzáférhetőség-módosítókkal rendelkezhetnek, például magán, nyilvános, statikus és védett, a láthatóság szintjétől függően. Egy absztrakt osztály nem váltható ki, és nem nyújt 100 százalékos absztrakciót, mivel konkrét módszerrel rendelkezik.
Az interfész ugyan úgy néz ki, mint egy osztály, nem az. Mivel a Java nem támogatja a több öröklést, a felület néha ideális az osztályhierarchia alapjának biztosításához. Az interfész inkább egy osztály tervezete, amelyet szintén a Java-ban történő absztrakció elérésére használnak. Absztrakt módszereket és statikus állandókat tartalmaz. Egyszerűen fogalmazva, egy interfész absztrakt módszerek gyűjteménye, amelyet annak meghatározására használnak, hogy az osztálynak végre kell hajtania. Az abszolút osztálytól eltérően egy interfész teljes absztrakciót biztosít a Java-ban. Lehet, hogy mind a metódusai, mind a változói ugyanúgy, mint egy osztály, azonban a felületen deklarált módszerek alapértelmezés szerint elvontak.
Absztrakt osztály | Felület |
Az elvont kulcsszót elvont osztály létrehozására használják, és módszerekkel használható. | Az interfész kulcsszója interfész létrehozásához használható, de nem használható módszerekkel. |
Az osztály csak egy absztrakt osztályt bővíthet. | Egy osztály több interfészt is megvalósíthat. |
Az absztrakt osztályoknak lehetnek absztrakt és nem absztrakt módszerei is. | Az interfésznek csak elvont módszerei lehetnek. |
A változók alapértelmezés szerint nem véglegesek. Tartalmazhat nem végleges változókat. | A változók alapértelmezés szerint véglegesek egy interfészen. |
Egy absztrakt osztály biztosítja a felület megvalósítását. | Az interfész nem tudja biztosítani egy elvont osztály megvalósítását. |
Lehet, hogy vannak megvalósítási módszerei. | Abszolút absztrakciót nyújt, és nem valósíthat meg módszert. |
Rendelkezhet nyilvános, magán, statikus és védett hozzáférési módosítókkal. | A módszerek közvetetten nyilvánosak és elvontak a Java felületen. |
Nem támogatja a több öröklést. | Több öröklést támogat. |
Ideális a kód újbóli felhasználásához és az evolúció szempontjából. | Ideális a típusbevalláshoz. |
Az absztrakcióhoz mind az elvont osztályt, mind az interfészt használják; ugyanakkor a különbségeknek méltányos részük van. A kettő közötti fő különbséget absztrakciós módszerek vezetik. Noha az előbbinek lehetnek absztrakt módszerei vagy nem, az utóbbi implicit módon elvont. Az absztrakt osztályoknak lehetnek absztrakt és nem absztrakt módszerei is. Ugyanakkor az interfésznek csak absztrakt módszerei lehetnek, tehát nem valósíthatók meg, vagyis egyszerűen azt jelenti, hogy egy interfésznek nem lehetnek absztrakt módszerei. Egy elvont osztály nem valósítható meg, amely tiltja az objektum létrehozását. Ugyanakkor az interfész osztályoknak tűnik, de nem az.