Különbség az absztrakt osztály és az interfész között a Java-ban

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.

Mi az absztrakt osztály a Java-ban??

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.

Mi az a felület??

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.

Különbség az absztrakt osztály és az interfész között a Java-ban

  1. Az abszolút osztály és interfész „több öröklése” a Java-ban - Annak ellenére, hogy mind az absztrakt osztályt, mind az interfészt elsősorban az absztrakcióhoz használják, meglehetősen különböznek egymástól. Míg az absztrakt osztály osztály, addig az interfész interfész. Ez azt jelenti, hogy míg egy interfész csak egy másik Java interfészt képes kiterjeszteni, az absztrakt osztály több öröklést valósíthat meg a Java-ban. Nos, a Java nem támogatja a több öröklést, de több öröklést megvalósíthat a Java-ban.
  2. A Java módszer és az interfész „Módszertípusa” - A kettő közötti második fő különbség az, hogy míg egy interfésznek csak absztrakt módszerei lehetnek, az absztrakt osztálynak absztrakt és nem absztrakt módszerek is lehetnek. A Java 8 óta azonban egy interfész alapértelmezett és statikus módszereket is alkalmazhat.
  3. Az abszolút osztály és interfész „hozzáférési módosítói” Java - Egy absztrakt osztálynak lehetnek nyilvános, magántulajdonú és védett hozzáférési módosítói, azonban az interfész módszerei közvetetten nyilvánosak és elvontak. Nem használhat más hozzáférési módosítót interfész módszerekkel ”.
  4. Az abszolút osztály és interfész „megvalósítása” Java-ban - Egy absztrakt osztály biztosítja a felület megvalósítását. Ugyanakkor az interfész nem tudja elvégezni egy elvont osztály megvalósítását.
  5. Az abszolút osztály és az interfész „kulcsszava” a Java-ban- Míg az „elvont” kulcsszó arra szolgál, hogy egy absztrakt osztálymódot absztraktnak nyilvánítsanak, az interfészek azonban teljesen más történet; csak nyilvános, statikus végállandókat és módszernyilatkozatokat kaphatnak.
  6. Az abszolút osztály és interfész „használata” a Java-ban - Míg az interfész ideális a típus deklarálásához, az elvont osztály a legmegfelelőbb a kód újrafelhasználhatóságához és az evolúció szempontjából. Az interfész osztályhoz hasonló, de nem osztály.
  7. Az absztrakt osztály és interfész „megbízhatósága” Java-ban- Egy másik lényeges különbség az absztrakt osztály és az interfész között az, hogy az előbbi kicsit gyorsabb, mint az utóbbi, mivel a keresés általában egy interfészbe kerül, mielőtt bármilyen felülbírált módszer meghívásra kerül a Java-ban.
  8. Az abszolút osztály és az interfész „végső változói” Java-ban - Az interfészben deklarált változók alapértelmezés szerint véglegesek, míg egy absztrakt osztály tartalmazhat vagy nem tartalmazhat nem végleges változókat.

Absztrakt osztály vs felület Java-ban: összehasonlító táblázat

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.

Összefoglaló pontok a Java absztrakt osztályáról és felületéről

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.