Különbség az absztrakt osztály és az interfész között a C #

Absztrakt osztály

Az absztrakt osztály az, amelyet csak más osztályok alapelemeként szánnak. Az 'elvont' módosítóval osztály osztályozható. Egy absztrakt módosító jelzi, hogy hiányzik néhány végrehajtás, amelyet be kell vezetni az abból származó osztályba. Az absztrakt osztály tagjai absztrakt és nem absztrakt lehetnek. Az absztrakt osztálynak legalább egy elvont módszerrel kell rendelkeznie, különben nincs értelme azt az osztályot „elvontnak” nyilvánítani.

Példa a C absztrakt osztályra:
Mint a fenti példában látható, a MyCircle osztályon belüli absztrakt 'Area' módszer felülbírálásra kerül a származtatott MyArea osztályban.

Felület

Az interfész csak a tagok deklarációját tartalmazza, beleértve a módszereket, tulajdonságokat, eseményeket vagy indexelőket. Nem tartalmazza a tagok végrehajtását. Egy osztály vagy struktúra megvalósítja a felületet, megadnia kell a felületen deklarált módszerek meghatározását. Ez azt jelenti, hogy egy interfész biztosít egy olyan általános struktúrát, amelyet a származtatott osztálynak követnie kell.

Példa egy interfészre a C # -ben:
Mint a fenti példában látható, a MyData interfésznek két módszer deklarálása a getdata () és a showdata (). A NameData osztálynak, aki ezt a felületet megvalósítja, meg kell adnia a MyData felületen deklarált módszerek meghatározását.

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

  1. Egy absztrakt osztálynak lehetnek absztrakt és nem absztrakt tagjai is. De egy felületen az összes tag implicit módon elvont, és a származtatott osztályban felül kell hagyni.
  2. Egy osztály örökíthet több interfészt, de csak egy elvont osztályt.
  3. Az absztrakt osztály tartalmazhat módszereket definícióval vagy definícióval. De egy interfész csak metódus aláírást tartalmazhat.
  4. Egy absztrakt osztály teljesen, részben vagy egyáltalán nem valósítható meg, de egy felületet teljes mértékben be kell építeni, azaz az összes tagot meg kell határozni a származtatott osztályban.
  5. Az interfész nem tartalmazhat hozzáférési módosítókat, de egy absztrakt osztály rendelkezhet funkciókkal, tulajdonságokkal vagy eseményekkel kapcsolatban.
AZT