Razlika med abstraktnim razredom in vmesnikom

Izvleček razreda proti vmesniku

Abstraktni razred in vmesnik sta dva objektno usmerjena konstrukta, ki ju najdemo v številnih objektno usmerjenih programskih jezikih, kot je Java. Abstraktni razred je mogoče obravnavati kot abstraktno različico navadnega (konkretnega) razreda, medtem ko lahko vmesnik šteje kot sredstvo za izvedbo pogodbe. Abstraktni razred je razred, ki ga ni mogoče inicializirati, vendar ga je mogoče razširiti. Vmesnik je vrsta, ki jo morajo implementirati drugi razredi. V Javi se razredi Abstrakt razvrstijo s ključno besedo Abstract, medtem ko se ključna beseda vmesnika uporablja za definiranje vmesnika.

Kaj je abstraktni razred?

Običajno razredov Abstrakcije, znanih tudi kot Abstraktni osnovni razredi (ABC), ni mogoče instancirati (primerka tega razreda ni mogoče ustvariti). Torej, abstraktne razrede je smiselno imeti le, če programski jezik podpira dedovanje (zmožnost ustvarjanja podrazredov iz razširitve razreda). Abstraktni razredi ponavadi predstavljajo abstraktni koncept ali entiteto z delnim izvajanjem ali brez njega. Zato abstraktni razredi delujejo kot nadrejeni razredi, iz katerih izhajajo otroški razredi, tako da bo nadrejeni razred delil nepopolne lastnosti nadrejenega razreda, za dokončanje pa jih je mogoče dodati funkcionalnosti.

Izvlečki lahko vsebujejo abstraktne metode. Podklasi, ki razširjajo abstraktni razred, lahko izvajajo te (podedovane) Abstraktne metode. Če otroški razred izvaja vse take abstraktne metode, je to konkreten razred. Če pa tega ne, postane tudi razred otroka abstraktni razred. Vse to pomeni, da ko programer nominira razred za izvleček, pravi, da bo razred nepopoln in da bo imel elemente, ki jih morajo izpolniti podedovalni podklasi. To je lep način za ustvarjanje pogodbe med dvema programerjema, ki poenostavlja naloge pri razvoju programske opreme. Programer, ki napiše kodo za dedovanje, mora natančno slediti definicijam metod (seveda pa ima lahko tudi lastno izvedbo).

Kaj je vmesnik?

Vmesnik je abstraktna vrsta, ki se uporablja za določitev pogodbe, ki naj bi jo izvajali razredi, ki izvajajo ta vmesnik. Ključna beseda vmesnika se uporablja za definiranje vmesnika, ključna beseda Implements pa se uporablja za izvajanje vmesnika po razredu (v programskem jeziku Java). Običajno bo vmesnik vseboval samo podpise metod in stalne deklaracije. Vsak vmesnik, ki izvaja določen vmesnik, bi moral izvajati vse metode, opredeljene v vmesniku, ali jih je treba razglasiti kot abstraktni razred. V Javi lahko vrsto referenčnega predmeta določimo kot vrsto vmesnika. Toda ta objekt mora biti bodisi ničen, bodisi mora imeti predmet razreda, ki izvaja ta določen vmesnik. S ključno besedo Implements v Javi lahko v en razred implementirate več vmesnikov.

Kakšna je razlika med abstraktnim razredom in vmesnikom?

Abstraktni razredi ponavadi predstavljajo abstraktni koncept ali entiteto z delnim izvajanjem ali brez njega. Po drugi strani je vmesnik abstraktna vrsta, ki se uporablja za določanje pogodbe, ki naj bi jo izvajali razredi. Abstraktni razredi naj bodo podedovani (ali podaljšani), medtem ko je treba uporabiti vmesnike. Abstraktni razredi lahko vsebujejo abstraktne metode, medtem ko vmesnik mora vsebovati samo abstraktne metode. Abstraktni razredi lahko vsebujejo poljubne spremenljivke, vmesniki pa lahko definirajo samo konstante. Razred ne more podedovati iz več abstraktnih razredov, vendar lahko izvaja več vmesnikov. Vmesnik ne more implementirati drugega vmesnika. Vendar lahko vmesnik razširi razred.