Az elvont osztály csak olyan, amely más osztályok alaposztályának tekinthető. Az „absztrakt” módosítót használják egy osztály absztrakt elkészítéséhez. Az elvont módosító azt jelzi, hogy van néhány hiányzó végrehajtás, amelyet végre kell hajtani az abból származó osztályban. Az elvont osztálynak lehet absztrakt és nem absztrakt tagjai. Az elvont osztálynak legalább egy elvont módszerrel kell rendelkeznie, ellenkező esetben nincs lehetőség arra, hogy ezt az osztályt „absztraktnak” nyilvánítsa.
Példa a C # absztrakt osztályra:
absztrakt osztály MyCircle {abstract public int Terület (); } Osztály MyArea: MyCircle {nyilvános felülírás int Terület () {visszatérő oldal * oldal; .....}}1 2 3 4 5 6 7 8 9 10 11 | absztrakt osztály MyCircle {abstract public int Terület (); } Osztály MyArea: MyCircle {nyilvános felülírás int Terület () {visszatérő oldal * oldal; . . . . . }} |
Amint az a fenti példában látható, a MyCircle osztályon belüli „Area” elvont módszer felülbírálódik a származtatott MyArea osztályban.
Felület
Az interfész csak a tagok nyilatkozatát tartalmazza, beleértve a módszereket, tulajdonságokat, eseményeket vagy indexelőket. Nem tartalmazza e tagok végrehajtását. Az osztály vagy a struktúra végrehajtja az interfészt, meg kell adnia az interfészben bejelentett módszerek meghatározását. Ez azt jelenti, hogy egy interfész olyan szabványos szerkezetet biztosít, amelyet a származtatott osztálynak követnie kell.
Példa a C # interfészre:
a System.Collections.Generic használatával; a System.Linq használatával; a System.Text használatával; névtér MyName {public interface MyData {void getdata (); void showdata (); } public class NévData: MyData {public double getdata () {string name; Console.WriteLine ("Adja meg a nevet:"); name = Console.ReadLine (); } public void showdata () {Console.WriteLine ("A nevem:", név); }}}1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | rendszer használatával. Gyűjtemények. Generikus ; rendszer használatával. Linq; rendszer használatával. Szöveg; névtér MyName {public interface MyData {void getdata (); void showdata (); } public class NévData: MyData {public double getdata () {string name; Konzol. WriteLine ("Írja be a nevet:"); name = Konzol. ReadLine (); } public void showdata () {Konzol. WriteLine ("A nevem:", név); }}} |
Amint az a fenti példában látható, a MyData interfésznek két módszertani nyilatkozata van: getdata () és showdata (). A NameData osztálynak, aki ezt az interfészt implementálja, meg kell adnia a MyData felületen bejelentett módszerek meghatározását.
Különbség az absztrakt osztály és az interfész között
- Az elvont osztálynak lehetnek absztrakt és nem absztrakt tagjai is. Egy felületen azonban minden tag implicit módon elvont, és a származtatott osztályban felül kell írni őket.
- Egy osztály több felületet örökölhet, de csak egy absztrakt osztályt.
- Egy absztrakt osztály olyan módszereket tartalmazhat, amelyek definícióval vagy definícióval rendelkeznek. Az interfész azonban csak módszer aláírást tartalmazhat.
- Egy absztrakt osztály teljes egészében, részben vagy egyáltalán nem valósítható meg, de a felületet teljes mértékben végre kell hajtani, azaz minden tagot meg kell határozni a származási osztályban.
- Az interfész nem tartalmazhat hozzáférési módosítókat, de az elvont osztálynak lehetnek funkciói, tulajdonságai vagy eseményei.