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:
- Mi az az elvont osztály a Java-ban?
- Interfész Java-ban
- Absztrakt osztály vs interfész
- Mikor kell használni az absztrakt osztályt és mikor az interfészt?
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.