Abstrakta klasė yra tokia, kuri yra skirta tik kitų klasių bazinei klasei. „Abstraktus“ modifikatorius naudojamas klasių santraukai sudaryti. Abstraktus modifikatorius rodo, kad trūksta įgyvendinimo, kuri turi būti įgyvendinta klasėje, gautoje iš jos. Abstrakta klasė gali turėti abstrakčius ir abstrakčius narius. Abstrakta klasė turėtų turėti bent vieną abstrakčią metodą, kitaip nenaudojama, kad ši klasė yra „abstrakta“.
Anotacijos klasės C pavyzdys:
abstrakta klasė „MyCircle“ {abstraktus viešasis int Area “(); } Klasė MyArea: MyCircle {public override int Area () {grįžtamoji pusė * pusė; .....}}1 2 3 4 5 6 7 8 9 10 11 | abstrakta klasė „MyCircle“ {abstraktus viešasis int Area “(); } Klasė MyArea: MyCircle {public override int Area () {grįžtamoji pusė * pusė; . . . . . }} |
Kaip parodyta aukščiau pateiktame pavyzdyje, „MyCircle“ klasėje esantis abstraktus metodas „Area“ yra panaikintas išvestoje „MyArea“ klasėje.
Sąsaja
Sąsajoje yra tik narių deklaracija, įskaitant metodus, savybes, įvykius ar indeksuotojus. Jame nėra šių narių įgyvendinimo. Klasė ar struktūra įgyvendina sąsają, turi pateikti sąsajoje deklaruotų metodų apibrėžimą. Tai reiškia, kad sąsaja suteikia standartinę struktūrą, kurią turi atitikti išvestinė klasė.
„C #“ sąsajos pavyzdys:
naudojant System.Collections.Generic; naudojant System.Linq; naudojant System.Text; namespace MyName {public interface MyData {void getdata (); void showdata (); } public class NameData: MyData {public double getdata () {string name; „Console.WriteLine“ („Įveskite pavadinimą:“); name = Console.ReadLine (); } public void showdata () {Console.WriteLine („Mano vardas:“, pavadinimas); }}}1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | naudojant „System“. Kolekcijos. Bendrasis; naudojant „System“. Linq; naudojant „System“. Tekstas; namespace MyName {public interface MyData {void getdata (); void showdata (); } public class NameData: MyData {public double getdata () {string name; Konsolė . WriteLine („Įveskite pavadinimą:“); name = Konsolė. „ReadLine“ (); } public void showdata () {Console. WriteLine („Mano vardas:“, pavadinimas); }}} |
Kaip parodyta aukščiau pateiktame pavyzdyje, sąsajoje „MyData“ yra dvi metodinės deklaracijos getdata () ir showdata (). Klasės pavadinimasDuomenys, kurie įgyvendina šią sąsają, turėtų pateikti MyData sąsajoje deklaruotų metodų apibrėžimą.
Skirtumas tarp abstrakčios klasės ir sąsajos
- Abstrakta klasė gali turėti abstrakčių ir ne abstrakčių narių. Tačiau sąsajoje visi nariai yra netiesiogiai abstraktūs ir turi būti panaikinti išvestoje klasėje.
- Klasė gali paveldėti kelias sąsajas, bet tik vieną abstrakčią klasę.
- Abstrakta klasė gali apimti metodus su apibrėžimu arba su ja. Tačiau sąsaja gali turėti tik metodo parašą.
- Abstrakta klasė gali būti visiškai, iš dalies arba visai neįgyvendinta, tačiau sąsaja turėtų būti visiškai įgyvendinta, ty visi nariai turi būti apibrėžti išvestinėje klasėje.
- Sąsaja negali turėti prieigos modifikatorių, tačiau abstrakta klasė gali ją naudoti funkcijoms, savybėms ar įvykiams.