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

Absztrakt osztály vs felület Java-ban

Annak érdekében, hogy megértsük a Java-ban az absztrakt osztály és az interfész közötti különbségeket, mindenekelőtt fontos, hogy megértsük mindegyiket egymástól függetlenül. A Java absztrakt osztályát az alosztályok deklarálására használják, közös tulajdonságokkal. Az absztrakt osztály általános használata más osztályok szuper osztálya, amely gyakorlatilag lehetővé teszi az absztrakt osztály kibővítését. Egy absztrakt kulcsszót használnak az absztrakt osztály deklarálásához. Csakúgy, mint bármely más osztálynak, az absztrakt osztálynak olyan területei vannak, amelyek leírják azokat a módszereket és jellemzőket, amelyeket az osztály végrehajthat. Pusztán egy elvont osztály deklarálásával az osztály nem kezdeményezhető

A Java interfész protokollnak tekinthető. Ez egy előre beállított és egyeztetett viselkedést jelent, amely lehetővé teszi a független tárgyak kölcsönhatásának megkönnyítését. A felhasználótól függően az interfész tartja a kulcsot a végrehajtott különféle műveletekhez. Ezért az interfész összeköttetést jelent a gyártó és a fogyasztó között. A Java interfészei tehát olyan üres csoportokat tartalmazó módszerek egy csoportja, amelyeknek állandó deklarációi lehetnek. Az osztálynak a Java interfésznek való kitettségével ez azt jelenti, hogy az osztálytól elvárt viselkedés az interfész összes módszerének megvalósítása.


Különbségek

Először is, egy absztrakt osztály lehetővé teszi olyan mezők használatát, amelyek nem statikusak vagy véglegesek, szemben az interfészekben használt statikus és végleges mezőkkel. Az interfészekben nem lehet végrehajtási kódot használni, és előfordulhat, hogy az elvont osztályban végrehajtási kódot használnak. Az absztrakt osztályban kidolgozott végrehajtási kódok tartalmazhatnak néhányat vagy az összes végrehajtott módszert. Alapértelmezés szerint a felület minden módja „elvont”.

A láthatóság olyan módszerek vagy absztrakt osztályok tagjai számára is lehetséges, amelyek változhatnak, például nyilvános, védett, magántulajdonúak, vagy semmi. A felület láthatósága ezzel szemben csak egy „nyilvános” láthatósági módra állítható be.

Az absztrakt osztály automatikusan örökli az objektumosztályt. Ez gyakorlatilag azt jelenti, hogy olyan módszereket, mint például a klón () és az egyenlő () tartalmaznak. Egy felületen az objektumosztály öröklése nem lehetséges. Ezt követően az absztrakt osztály képes konstruktorral rendelkezni, de az interfésznek nem lehet ilyen.

A Java interfésznek is nagyon fontos funkciója van a több öröklés megvalósításában, mivel az osztálynak csak egy szuper osztály lehet. Bár csak egy szuper osztály lehet jelen, a tetszőleges számú felületen megvalósítható. Egy absztrakt osztályban nem lehet több öröklés.

A teljesítményben az interfészek általában lassabban valósulnak meg, szemben az absztrakt osztályokkal, elsősorban annak az extra iránynak köszönhetően, hogy az osztályban megtalálják a megfelelő módszert. A különbség azonban lassabbá vált a modern Java virtuális gépek miatt, amelyeket folyamatosan fejlesztünk.

Egy módszer hozzáadása az interfészhez megköveteli az összes végrehajtó osztály nyomon követését, amelyek az adott felületet megvalósítják. Alternatív megoldásként kibővítheti a felületet oly módon, hogy lehetővé tegye extra módszerek használatát. Ha véletlenül absztrakt osztályokkal foglalkozik, akkor csak hozzá kell adnia a módszer alapértelmezett megvalósítását, és a kód tovább működik. Mivel az absztrakt osztályok és az interfészek között különbségek vannak, fontos megjegyezni, hogy nem riválisok, hanem az itt említett különbségek kiegészítik egymást.  

összefoglalás

  1. Az absztrakt osztálymezők nem statikusak vagy véglegesek, szemben a statikus és a végső táblákat tartalmazó felülettel.

  2. Nincs interfészben végrehajtási kód, míg absztrakt osztályban használható.

  3. Az interfész láthatósága csak nyilvános lehet, míg az absztrakt osztályok láthatósága változhat.

  4. Egy absztrakt osztály automatikusan örökli az objektumosztályt, de az interfészen nem lehetséges.

  5. Az absztrakt osztály gyorsabb, mint a felület a megvalósításban.