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

Az interfész meghatározza, hogy az osztálynak mit kell tennie, de nem hogyan. Alapvetően ez az osztályterv. Az interfészen deklarált változók alapértelmezés szerint nyilvánosak, statikusak és végsőek. Az „elvont” kulcsszóval deklarált osztályt elvont osztálynak nevezzük. Az Ab osztályból származtatott osztálynak meg kell határoznia az absztrakt osztályban absztraktnek nyilvánított összes módszert.

Mi az interfész?

Az interfész olyan, mint egy osztály, de nem az, amelynek lehet metódusai és változói osztályként, de az interfészben deklarált metódusok alapértelmezés szerint absztraktak. Interfészt használunk a teljes absztrakció biztosításához, mivel az interfészekben alkalmazott módszereknek nincs törzsük. Tehát az osztálynak végre kell hajtania azokat, mielőtt megpróbálná elérni őket. Általában egy felületet megvalósító osztálynak meg kell határoznia az összes felületen deklarált módszert, ha nem, akkor az osztályt elvontnak kell nyilvánítani. Az interfészt egy osztályra nem terjeszthetjük ki, mivel a Java nem engedélyezi. Egy interfész deklarálásához interfész kulcsszót kell használnunk, és az interfész megvalósításához szükségünk van az eszköz kulcsszóra.

Mi az absztrakt?

Az „elvont” kulcsszóval deklarált osztályt elvont osztálynak nevezzük. Az absztrakt osztályoknak lehetnek absztrakt (test nélküli módszer) és konkrét módszerek (testtel végzett módszer), a normál osztálytól eltérően. Az absztrakt osztály nem váltható ki, azaz nem tudunk objektumot létrehozni ehhez, de utalások lehetnek az absztrakt osztályra egy másik osztály létrehozásával, amely kiterjeszti az absztrakt osztályt és biztosítja a módszerek végrehajtását. Használhatunk egy gyermek tárgyát (amelyet újonnan hoztak létre) absztrakt és normál módszerek meghívására. Lehet, hogy építői, és az elvont osztályt akkor hívják meg, amikor egy örökölt osztálypéldányt hoznak létre. A Java-ban van absztrakt osztály absztrakt kulcsszó nélkül, de ezeket az osztályokat nem lehet azonnal megvalósítani, csak örökölni lehetnek és végső módszerekkel is rendelkezhetünk.

Összehasonlítás a Java interfész és az absztrakt osztály között (Infographics)

Az alábbiakban bemutatjuk a Java 9 kezelőfelület és az abszolút osztály 9 legjobb összehasonlítását

Főbb különbségek a Java interfész és az absztrakt osztály között

Mindkét Java interfész vs abszolút osztály népszerű választás a piacon; beszéljünk néhány, a Java interfész és az abszolút osztály közötti főbb különbségről:

  • Egy interfész felhasználható több öröklés és laza összekapcsolás elérésére, amelyet az absztrakt osztály nem képes elérni.
  • A teljes absztrakció eléréséhez használt felület, míg egy absztrakt osztály részleges absztrakciót érhet el.
  • Az absztrakt osztály egyszerre csak egy normál vagy absztrakt osztályt terjeszt, míg az interfész egyszerre tetszőleges számú interfészt képes kiterjeszteni.
  • Az absztrakt osztály kibővít egy másik absztrakt vagy normál osztályt, míg az interfész csak egy másik Java interfészt bővíthet.
  • Egy absztrakt osztályban deklarálni kell a módszereket az „elvont” kulcsszó használatával, míg az interfészben deklarálhatunk módszereket az „absztrakt” kulcsszóval vagy anélkül.
  • Az interfésznek csak absztrakt módszerei lehetnek, míg egy absztrakt osztálynak absztrakt és normál osztályok is lehetnek.
  • Egy absztrakt osztálynak lehetnek különböző változói, például statikus, végleges, nem végleges, nem statikus, nyilvános, magán stb., Míg az interfésznek csak nyilvános, statikus és végső változói lehetnek.
  • Az absztrakt osztály és annak módszerei „absztrakt” kulcsszóval hozhatók létre, míg az interfész kulcsszó az interfész létrehozásához szolgál, de nem a módszerek.
  • Egy absztrakt osztálynak lehet konstruktora, míg az interfésznek nincs konstruktora.
  • Egy absztrakt osztályt használunk az alosztályok szerződésének és a módszer megvalósításának meghatározására, míg az alosztályokra vonatkozó szerződés meghatározásához interfészt használunk.
  • Az interfész csak más Java interfészeket terjeszthet, míg az absztrakt osztály kiterjesztheti más osztályokat és megvalósíthatja az interfészeket is.
  • Az osztálynak, amely kiterjeszti az absztrakt osztályt kiterjesztve a kulcsszót, minden absztrakt osztályban deklarált módszert végre kell hajtania, kivéve, ha az osztály szintén elvont osztály, míg az az osztály, amely a felületet interfész kulcsszó használatával valósítja meg, az interfészben deklarált összes módszer megvalósítását is biztosítja.

Összehasonlító táblázat Java interfész vs absztrakt osztály

Az alábbiakban bemutatjuk a Java interfész és az abszolút osztály összehasonlító táblázatát

A Java interfész és az absztrakt osztály összehasonlításának alapjaiAbsztrakt osztályJava interfész
Módszer típusaAz absztrakt osztály mind absztrakt (test nélküli módszerek), mind nem absztrakt (testtel végzett módszerek) lehetAz Interfészben csak absztrakt módszerekkel rendelkezhetünk. A Java 8-ból az Interface statikus és alapértelmezett módszerekkel is rendelkezik
SzintaxisAz absztrakt osztály a következőképpen deklarálható:
nyilvános absztrakt osztályú iskola (Nyilvános absztrakt osztályok ();
nyilvános absztrakt érvénytelen erő ();)
Az interfész a következőképpen deklarálható:
nyilvános interfész alakja (Void draw_rect (); Void draw_square ();)
Végső változóEgy absztrakt osztálynak lehetnek végleges és nem végleges változói.Míg az interfésznek csak végső változói lehetnek, mivel a változók alapértelmezés szerint végsőek az interfészen.
VégrehajtásEgy absztrakt osztály biztosítja az összes absztrakt módszer megvalósítását a felületen.Míg az interfészen nem tudjuk biztosítani egy elvont osztály megvalósítását.
Változó típusEgy absztrakt osztály minden típusú változót tartalmazhat, azaz végleges, nem végleges, statikus, nem statikus, magán, nyilvános stb.Míg az interfésznek csak nyilvános, statikus és végső változói lehetnek.
Adattagok hozzáférhetőségeEgy absztrakt osztálynak lehetnek tagjai magán, védett, nyilvános stb.Az interfésznek csak nyilvános osztály tagjai lehetnek, mivel az interfész adat tagjai alapértelmezés szerint nyilvánosak.
Öröklés vs absztrakcióAz absztrakt osztály kibővíthető az „kiterjeszt” kulcsszó használatával, és biztosítania kell az összes deklarált módszer megvalósítását a szülő osztályban vagy az elvont osztálybanAz interfész „interfész” kulcsszóval valósítható meg, és a felületen deklarált összes módszer megvalósítását biztosítani kell
Többszörös megvalósításEgy absztrakt osztály kiterjesztheti egy másik Java osztályt, több interfész megvalósításáraEgy interfész csak egy másik interfészt bővíthet.
Mikor kell használniEgy absztrakt osztályt akkor kell használni, ha néhány osztálynak meg kell osztania néhány sornyi kódot, akkor ezeket a kódokat elvont osztályba sorolhatjuk és kiterjeszthetjük az összes kapcsolódó osztályra.Interfész akkor használható, ha több öröklést és teljes absztrakciót kell elérnünk az interfészben deklarált összes módszer végrehajtásával egy interfészt megvalósító osztály által.

Összegzés - Java interfész vs absztrakt osztály

Végül a Java interfész és az abszolút osztály közötti különbség áttekintése. Remélem, jobban megérti ezeket a Java interfész vs absztrakt osztály fogalmait. Igényeink alapján mind a Java interfész, mind az abszolút osztály együttesen használható, csak interfész és csak absztrakt osztály. De a felületek és az absztrakt osztály együttes használata a legjobb módszer a tervezéshez. Ha az osztálynak meg kell osztania valamilyen kódot, akkor elhelyezzük azt a kódot az absztrakt osztályba, és amikor egy objektum állapota szükséges, akkor nem statikus vagy nem végleges mezők meghatározásával kaphatunk absztrakt osztályt. Az Interfész akkor használható, amikor teljes absztrakcióra, több öröklésre és laza csatolásra van szükségünk.

Ajánlott cikk

Ez útmutatóként szolgál a Java interfész és az abszolút osztály közötti legfontosabb különbségekhez. Itt tárgyaljuk a Java interfész és az abszolút osztály legfontosabb különbségeit az infographics és az összehasonlító táblázat segítségével is. Lehet, hogy megnézi a következő cikkeket is -

  1. Mennyire hasznosak a C # interjúval kapcsolatos kérdések és válaszok?
  2. 8 Hasznos összehasonlítás-HTML5 vs Flash
  3. Java vs C # - 8 fontos különbség
  4. Ruby vs Node
  5. HTML5 vs. JavaScript összehasonlítás
  6. ArrayList vs Java Vector

Kategória: