Mi a különbség a Java absztrakt osztálya és az interfésze között?



Ez a cikk segít megérteni a java elvont osztálya és interfésze közötti fő különbséget egy példa program segítségével.

Az elvont osztályok és az interfészek a két fő építőelema . Noha mindkettőt elsősorban absztrakcióra használják, nagyon különböznek egymástól, és nem használhatók felcserélhető módon. Ebben a cikkben derítsük ki, mi a különbség az elvont osztály és az interfész között a Java-ban.

A cikkben tárgyalt témák a következők:





Az absztrakt osztály és az interfész közötti különbségek megértése , tudnod kell, mi az absztrakt osztály és mi az a felület. Tehát kezdjük azzal, hogy megbeszéljük, mik ezek.

Mi az elvont osztály a Java-ban?

Bármely programozási nyelven, absztrakció azt jelenti, hogy a lényegtelen részleteket elrejti a felhasználó elől, hogy csak az alapvető részletekre összpontosítson a hatékonyság növelése érdekében, ezáltal csökkentve az összetettséget. A Java-ban az absztrakciót a absztrakt osztályok . Az absztrakt osztály rögzíti az alosztályok általános jellemzőit, és tartalmazhat vagy sem tartalmazhat absztrakt módszert. Nem lehet példányosítani, hanem csak alosztályai által használható szuperosztályként. Itt van egy példa absztrakt osztályt bemutató programra:



Jegyzet: An elvont módszer , olyan módszer, amelyet nem hajtanak végre a helyén, és hozzáteszihiányosság a osztály .

MyPackage // absztrakt osztály absztrakt osztály Animal {String AnimalName = ''Animal (String name) {this.AnimalName = name} // nem absztrakt módszerek deklarálása // alapértelmezett implementációja public void BasicInfo (String details) {System. out.println (this.AnimalName + '' + részletek)} // absztrakt módszerek, amelyeket // az alosztálya (i) valósítanak meg absztrakt public void habitat () absztrakt public void respiration ()} class Terrestrial extends Animal {// konstruktor Terrestrial (karakterlánc neve) {szuper (név)} @ Nyilvános érvénytelen élőhely felülbírálása () {System.out.println ('szárazföldön hagyás és')} @ Nyilvános érvénytelen légzés felülírása () {System.out.println ('légzés tüdőn vagy légcsőn keresztül. ')}} osztály Vízi kiterjeszti az állatot {// konstruktor vízi (karakterlánc neve) {szuper (név)} @ felülbírálja a nyilvános érvénytelen élőhelyet () {System.out.println (' Vízben távozik és ') } @Orride public void respiration () {System.out.println ('légzés kopoltyúkon vagy bőrükön keresztül.')}} Class AbstractClassDemo {public static voi d main (String [] args) {// a földi osztály objektumának létrehozása // és az Animal osztály hivatkozás felhasználása. Állati objektum1 = új földi ('Emberek') objektum1. BasicInfo ('földi lények, ők') object1.habitat () object1.respiration () System.out.println ('') // Az Animal kör Objektumok létrehozása object2 = új vízi ('halak') object2.BasicInfo ('vízi lények, ők') object2.habitat () object2.respiration ()}}

Kimenet

Az emberek földi lények, a szárazföldön távoznak, és tüdőn vagy légcsőn keresztül lélegeznek. A halak vízi lények, vízben távoznak, és kopoltyúkon vagy bőrükön keresztül lélegeznek.

Az Alapinformáció () olyan módszer, amelyet megosztott Földi és Vízi osztályok. Mivel Állatosztály nem lehet elindítani, mi létrehozzuk a tárgyakat Földi és Vízi osztályok programozási célokra. Ezután felületek vannak.



Interfész Java-ban

Az elérés másik módja absztrakció a Java használatával interfészek .Az interfész elvont módszerek gyűjteménye, nincs konkrétum , ellentétben egy absztrakt osztállyal. De az absztrakt osztálytól eltérően egy felület teljes absztrakciót biztosít Java-ban. Lehetnek módszerei és változói, akárcsak egy osztály. Az interfészen deklarált módszerek azonban alapból elvontak.Itt van egy absztrakt osztály bemutatása:

js megkapja a tömb hosszát
csomag MyPackage interfész Állatok {// absztrakt módszerek void habitat () void respiration ()} TerrestrialA osztály megvalósítja az állatokat {String AnimalName = '' // konstruktor TerrestrialA (String name) {this.AnimalName = name} @Orride public void habitat () {System.out.println (this.AnimalName + 'szabadság szárazföldön és')} @Orride public void respiration () {System.out.println ('légzés tüdőn vagy légcsőn keresztül.')}}} Osztály AquaticA megvalósítja az állatokat {String AnimalName = '' // konstruktor AquaticA (karakterlánc neve) {this.AnimalName = name} @Orride public void habitat () {System.out.println (this.AnimalName + 'leave in water and')} @Orride public void respiration () {System.out.println ('lélegezzünk át kopoltyúkon vagy bőrükön keresztül.')}} JavaInterfaceDemo osztály {public static void main (String [] args) {// a Terrestrial osztály objektumának létrehozása // és Animal osztály hivatkozás használata . Állatok object1 = new TerrestrialA ('Emberek') object1.habitat () object1.respiration () System.out.println ('') // az Animals kör osztály objektumainak létrehozása object2 = új AquaticA ('Fishes') object2.habitat () object2.respiration ()}}

Kimenet

Az emberek a szárazföldön távoznak, és tüdőn vagy légcsőn keresztül lélegeznek. A halak vízben távoznak, és kopoltyúkon vagy bőrükön keresztül lélegeznek.

Ha nincs közös kódja a osztályok , akkor mehet a felületre. A kezelőfelület inkább hasonlít egy osztály tervrajzára, mivel nem rendelkezik nem elvont módszerekkel.

A fenti tartalom alapján észrevehette a legfontosabb különbséget az absztrakt osztály és az interfész között . Ami az absztrakt osztálytól eltérően egy felület teljes absztrakció Java-ban. Most menjünk előre, és soroljunk fel további különbségeket.

Absztrakt osztály vs interfész

Az alábbi táblázat az absztrakt osztály és az interfész közötti legfontosabb különbségeket sorolja fel.

Paraméter Absztrakt osztály Felület

Alapértelmezett módszer megvalósítása

Alapértelmezett módszer-implementációja lehet

Az interfészek tiszta absztrakciót biztosítanak, és egyáltalán nem valósíthatók meg

Változók

Nem végleges változókat tartalmazhat.

Az interfészen deklarált változók alapértelmezés szerint véglegesek

Használt kulcsszó

Az absztrakt osztály kibővíthető a „kiterjeszti” kulcsszóval

Az interfészt kulcsszóelemek segítségével kell megvalósítani

Hozzáférés módosítók

Tudrendelkezik nyilvános, védett, privát és alapértelmezett módosítóval

Az interfész módszerek alapértelmezés szerint nyilvánosak. nem használhatsz vele más hozzáférés-módosítót

A megvalósítás sebessége

Gyorsabb, mint az interfész

Az interfész valamivel lassabb és további indirektet igényel

hogyan hozhat létre tömb objektumot a java-ban

Normál osztály

Csak egy absztrakt osztályt terjeszthet ki

Több interfészt képes megvalósítani

Kivitelezők

Egy absztrakt osztálynak lehetnek konstruktorai

Egy interfésznek nem lehet konstruktora

Többszörös öröklés

Az absztrakt osztály kiterjeszthet egy másik osztályt, és több Java interfészt is megvalósíthat

Az interfész csak egy másik Java interfészt bővíthet

Nos, most a legfontosabb különbségek az absztrakt osztály és a Java felület között. De hogyan döntse el, mikor melyiket használja e kettő közül?

Mikor kell használni az absztrakt osztályt és mikor az interfészt?

Fontolja meg az absztrakt osztályok használatát a következő esetekben:

  • Ha van néhány kapcsolódó osztályod, amelyeknek meg kell osztaniuk a azonos kódsorok
  • Amikor meg akarja definiálni a nem statikus vagy nem végleges mezők
  • Amikor vannakmódszerek vagy mezőkvagy megkövetelik hozzáférés módosítók nem nyilvános (például védett és magán)

Fontolja meg az interfészek használatát a következő esetekben:

  • Amikor el akarja érni tiszta absztrakció
  • Ha alkalmazni akarod többszörös , azaztöbb interfészt kell megvalósítani
  • Ha meg akarja adni egy adott adattípus viselkedését, de nem érdekli, hogy ki hajtja végre a viselkedését.

Ezzel eljutottunk a cikk végéhez. Az interjúban az egyik leggyakrabban feltett Java-kérdéssel foglalkoztam, amely az elvont osztály és a Java-felület közötti különbség.

Győződjön meg arról, hogy a lehető legtöbbet gyakorolja, és állítsa vissza a tapasztalatait.

Nézze meg a az Edureka, egy megbízható online tanulási vállalat, amelynek több mint 250 000 elégedett tanulóval rendelkező hálózata elterjedt az egész világon. Azért vagyunk itt, hogy segítséget nyújtsunk az utazás minden lépésében, hogy e java interjúk kérdése mellett a tananyagot kitaláljuk olyan hallgatók és szakemberek számára, akik Java fejlesztők szeretnének lenni.

Van egy kérdésünk? Kérjük, említse meg a „java Map felület” megjegyzés szakaszában cikket, és a lehető leghamarabb kapcsolatba lépünk Önnel.