Különbségek a C # absztrakt és interfész között
Az absztrakt osztály és az interfész egyaránt nagyon fontos módszertan, hogy megtanulhassuk az objektum-orientált programozási képzéseket. Általában mindkettő nagyon zavaros az objektum-orientált programozás kezdeti megkezdésekor. Ha definiálunk egy elvont osztályt, de nem valósítunk meg semmit, akkor az abszolút interfésznek tűnik, senki nem képes megérteni a köztük lévő különbségeket, nem pedig egy nyilatkozatot. Ugyanakkor nagyon sok különbség és hasonlóság létezik az Interfész és az Absztrakt osztály között.
Az absztrakt osztály olyan egyszerű osztály, amelyet elvontnak tekintünk, és amelyet nem lehetett megvalósítani. Az absztrakt osztályt néhány alkategóriával ki kell terjeszteni az adott szuperosztály vagy absztrakt osztály összes tulajdonságának vagy hasznosságának felhasználása érdekében. Valójában segít fenntartani a szuperosztályok vagy alosztályok megfelelő hierarchiáját. Több alosztály felhasználhatja ugyanazt a funkcionalitásnevet, különböző meghatározásokkal. Valójában biztosítja, hogy az alkalmazásnak bizonyos hierarchiát vagy szabványokat kell követnie, amelyek továbbviszik az alkalmazás megfelelő magyarázatát nyújtó funkciókat.
A felület egyáltalán nem osztály, csakúgy, mint egy entitás, amelyet egy adott Interfész szó határoz meg. Az interfész soha nem határozott meg definíciót, teljes egészében az adott deklarációtól függ, amelyet egyszerre több osztálynak kell örökölnie. Több osztály képes meghatározni egy adott felület egyedi deklarációjának többszörös meghatározását. Ugyanolyan típusú létesítményt tart, mint az abszolút osztály, főként az alosztályok azonos hierarchiájának fenntartásában, eltérő meghatározással. De az absztrakt osztály és az interfész közötti fő különbség a kiterjesztett több absztrakt osztály között nem lehetséges, míg a több interfész öröklése lehetséges. Mivel a C # nem támogatja a több öröklést, ezért az interfész ugyanazt a funkcionalitást biztosítja.
A C # absztrakt és interfész közötti összehasonlítás fejről fejre (infographics)
Az alábbiakban a legjobb összehasonlítások találhatók a C # Abstract vs Interface között
Főbb különbségek a C # absztrakt és interfész között
Néhány kulcsfontosságú különbséget az alábbiakban ismertetjük a C # Abstract vs Interface között
- Az absztrakt osztály és az interfész valójában egy vagy több alosztályt használ. A fő korlátozás az egyik alosztály, amely nem képes kiterjeszteni több absztrakt osztályt, vagyis több öröklés nem lehetséges, míg az alosztály egyszerre több interfészt is örökölhet.
- Az absztrakt a testet egy definícióval, vagy csak egy módszer meghatározásával tarthatja. Az alosztály, amely kiterjeszti az absztrakt osztályt, felhasználható a test módszerrel, és megmagyarázhatja az absztrakt módszer bármilyen speciális definíciójának test részleteit is. Az absztrakt osztálynak legalább egy elvont módszerrel kell rendelkeznie (a módszer egyetlen definícióját jelenti test nélkül). Az interfésznek csak a módszer meghatározása van, nem tartalmazhat semmiféle definíciós módszert. Az egyik alosztály öröklése, amely összekapcsolja és felhasználja azokat, amelyek nem definiálják a módszert, a megfelelő test részleteivel, dinamikusan több alosztály számára.
- Egy absztrakt osztálynak különböző hozzáférési módosítói lehetnek, például nyilvános, magán vagy védett, így az absztrakt osztályon belüli bármely módszer vagy tulajdonság meghatározhat különböző hozzáférési módosítókat. Míg az interfész számára nem adható meg hozzáférés-módosító, tehát az interfészen belül definiált összes tulajdonságnak vagy módszernek nyilvános hozzáférés-módosítónak kell lennie, addig nem szabad meghatározni egy másik hozzáférés-módosítót az interfészen belül.
- A szuperosztály és az alosztály fogalma pontosan tökéletes az absztrakt osztály számára. Egy absztrakt osztály megkaphatja az alosztály központi identitását, általában az adott alosztály hasonló típusú objektumával rendelkezik. Míg az interfész általában egy osztály perifériás aktivitásának egy meghatározott típusát határozza meg. Tegyük fel, hogy van egy interfész neve Mozgatható, most ez a felület örökölhető autóval és emberrel egyaránt. Míg az autók és az emberek egyaránt egy teljesen más osztályú tárgy, és közöttük semmiféle kapcsolat nem áll fenn.
- Ha az alkalmazás különféle megvalósításokkal rendelkezik, de az adott megvalósítás tevékenysége majdnem ugyanaz, akkor jobb az Absztrakt osztály használata, ahol meghatározhatja az adott logikát, és az összes alosztály könnyen elérheti ugyanazt a logikát. Példaként említhető az adatbázis-összekapcsolhatóság, amelyet általában az összes alosztály használ, tehát ha ez az összeköttetési generáció és bezáró kód absztrakt osztályban tartható, akkor bármely alosztály számára nagyon könnyű hozzáférni ehhez. Míg több megvalósítás csak a módszer aláírását akarja megosztani, addig az interfész mindig jobb.
Összehasonlító táblázat C # Absztrakt vs felület
Az alábbiakban látható a C # Összegzés és Interfész összehasonlító táblázata
AZ ALAPJA
ÖSSZEHASONLÍTÁS | Absztrakt osztály | Felület |
Több öröklés | Egy alosztály csak egy absztrakt osztályt képes kibővíteni, nem többszörösét. | Egy alosztály képes több interfész megvalósítására, amelyek segítik a helyreállítást, és nem támogatják a C # többszörös öröklési tulajdonságát. |
Osztály meghatározása | Az interfész soha nem határoz meg egy meghatározás egy konkrét részét, csak azt a definíciót tartja, amelyet később az alosztály megfelelően hajt végre. | Az absztrakt az egész testet képes meghatározással megőrizni, és az egyetlen definícióhoz hasonló felületet is tartalmazhat, amelyet bármely alosztály felülbírálhat. Minden absztrakt osztálynak rendelkeznie kell legalább egy olyan elvont módszerrel, amely csak a definíció részleteit tartalmazza, a testet később az alosztályban ismertetjük. |
Hozzáférés-módosító | Az interfész definíciójában soha nincs hozzáférési módosító. Az interfész általában minden tulajdonságot nyilvánosnak tekint. | Egy absztrakt osztály rendelkezhet hozzáférési módosítóval annak meghatározásához. Tehát az összes ingatlan lehet nyilvános, magántulajdonban vagy védett. |
Teljesítmény | Általában kicsit több időbe telik, hogy megtudja az alosztály megfelelő módszerét. | Kicsit gyorsabb, mint a felület. |
Következtetés
Az Interface és az Abstract osztályokat elsősorban több megvalósítás intelligens kezelésére használják, hogy a redundáns kód könnyen elkerülhető legyen, és minden megfelelő hierarchiában és felépítésben van. A felület mindig jobb lesz, ha ugyanazt az aláírást megosztja több példányban. Tegyük fel, hogy a Pantaloonsnak van egy fő ága, és több ággal is rendelkezik egy másik helyen. Most egy adott termék elindulhat egy meghatározott helyen egy megközelítéssel, míg egy másik helyen más megközelítéssel indul. Ebben az esetben a logikának ugyanannak a terméknek különböznie kell, több helyen, ez a fajta logika jobban képes kezelni a felületen. Most ugyanarra a termékre lehet néhány közös jellemző, amelyeket ki kell emelni minden ágazatban a termék bevezetésekor. Ebben az esetben a kód redundancia elkerülése érdekében adja hozzá ugyanazt a logikát az absztrakt osztályban, és felhasználható több megvalósításban, különböző ágazatokban.
Ajánlott cikk
Ez egy hasznos útmutató a C # absztrakt és interfész közötti különbségekhez. Itt tárgyaljuk fej-fej összehasonlítást, amely a legfontosabb különbség az infographics mellett. A következő cikkben további információkat is megnézhet -
- C # Interfész vs Absztrakt osztály
- Java interfész vs absztrakt osztály
- Gépelési felület vs osztály
- TypeScript típus vs interfész
- Hozzáférés-módosítók a PHP-ben
- Absztrakt osztályok a JavaScript-ben