Különbségek az Absztrakt osztály és a Java interfész között A különbség a

Anonim

Abstract Class vs Interface Java-ban

Az absztrakt osztály és a Java interfész közötti különbségek megértéséhez fontos, hogy először is mindegyiket külön-külön megértsük. A Java absztrakt osztályt olyan alosztályok deklarálásához használják, amelyek közös tulajdonságokkal rendelkeznek. Az absztrakt osztály közös használata más osztályok szuperosztálya, amely valójában lehetővé teszi az absztrakt osztály kiterjesztését. Egy absztrakt osztályban egy absztrakt kulcsszó szerepel. Ahogy bármelyik másik osztálynak is lenne, az absztrakt osztálynak olyan területei vannak, amelyek leírják azokat a módszereket és jellemzőket, amelyeket az osztály végezhet. Egy elvont osztály puszta deklarálásával az osztály nem indítható

A Java interfész egy protokollhoz hasonlítható. Előre beállított és elfogadott magatartás, amely lehetővé teszi a nem kapcsolódó objektumok kölcsönhatásának megkönnyítését. A felhasználótól függően az interfész a kulcsot a különböző végrehajtandó műveletekhez tartja. Az interfész tehát a termelő és a fogyasztó közötti kapcsolat. A Java-interfészek tehát olyan csoportok, amelyek üres testeket tartalmaznak, amelyeknek állandó deklarációi lehetnek. Ha egy osztályt felmutat a Java felületre, akkor azt jelenti, hogy az osztály várható viselkedése az interfész minden módjának végrehajtása.

Különbségek

Először is, egy absztrakt osztály lehetővé teszi olyan mezők számára, amelyek nem statikusak vagy véglegesek, szemben a felületeken használt statikus és végső mezőkkel. Az interfészek nem rendelkezhetnek semmilyen végrehajtási kóddal, és lehet, hogy az absztrakt osztályban végrehajtási kódot használnak. Az elvont osztályban bevezetett végrehajtási kódok néhány vagy az összes végrehajtott módszert tartalmazhatnak. Alapértelmezés szerint az interfész minden módja "elvont". „

Látható is lehet olyan módszerek vagy tagok egy elvont osztály, amely változhat, mint a nyilvános, védett, magán vagy sem. A kezelőfelület láthatósága azonban csak egy láthatósági módra van beállítva, amely "nyilvános. '"

Az absztrakt osztály automatikusan örökli az objektumosztályt. Ez valójában azt jelenti, hogy olyan módszerekről van szó, mint a klón () és az egyenlők (). Egy interfészen nem lehetséges az objektumosztály öröksége. Ezt követően az absztrakt osztálynak képesnek kell lennie egy konstruktornak, de egy interfésznek nem lehet ilyen.

A Java interfésznek nagyon fontos szerepe van a többszörös öröklés megvalósításában is, mivel egy osztálynak csak egy szuperosztálya lehet. Bár csak egy szuperosztály jelenhet meg, bármilyen interfészen végrehajtható. Nem lehet többszörös öröklést absztrakt osztályban.

A teljesítményben az interfészek általában lassabbak a megvalósításban, szemben az absztrakt osztályral, főként az osztály megfelelő módszerének megtalálása érdekében. A különbség azonban lassabb lett a modern Java virtuális gépek miatt, amelyeket folyamatosan frissítenek.

Egy módszer hozzáadása egy interfészbe megköveteli, hogy nyomon kövesse az összes olyan végrehajtási osztályt, amely végrehajtja az adott felületet. Alternatív megoldásként kiterjesztheti az interfészt, hogy lehetővé tegye extra módszerek használatát. Ha absztrakt osztályra gondolsz, akkor mindössze annyit kell tennie, hogy hozzáadja a módszer alapértelmezett végrehajtását, és a kód továbbra is működik. Minthogy léteznek különbségek az elvont osztályok és az interfészek között, fontos megjegyezni, hogy nem riválisok, de az itt említett különbségek egymást kiegészítik.

Összegzés

  1. Az absztrakt osztálymezők nem statikusak vagy véglegesek, szemben a statikus és a végleges táblázatokkal.

  2. A végrehajtási kód nem használható az interfészekben, míg absztrakt osztályban használható.

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

  4. Az absztrakt osztály automatikusan örökli az objektumosztályt, de ez nem lehetséges a felületen.

  5. Absztrakt osztály gyorsabb, mint a végrehajtás interfésze.