Atšķirība starp abstraktu klasi un interfeisu

Abstraktā klase un interfeiss

Abstraktā klase (vai tips) ir nominālā tipa sistēmas tips, ko deklarējusi programma. Lai arī nosaukums to norāda, abstraktā klase var ietvert vai neietvert abstraktas metodes vai īpašības. Atšķirības klase attiecas uz dažādām valodu konstrukcijām, kuras var izmantot, lai ieviestu abstraktus tipus. Abstraktās klases var raksturot ar dizaina problēmu, kas vislabāk atbilst objektorientētajai programmēšanai, un ar nepabeigto raksturu.

Saskarne ir abstrakts tips, kas klasēm jāīsteno, lai norādītu saskarni (vispārīgi runājot). Saskarnēs var būt tikai metodes paraksti un pastāvīgas deklarācijas (gan statiskas, gan galīgas), nekad nav metodes definīcijas. Saskarnes imitē vairākus mantojumus un tiek izmantotas, lai kodētu līdzības, kas dalītas starp dažāda veida klasēm.

Abstraktus tipus var izveidot, apzīmēt vai simulēt vairākos dažādos veidos. Programmētājs var apzīmēt abstraktus tipus, precīzi izmantojot atslēgvārdu abstrakts, klases definīcijā iekļaujot vienu vai vairākas metodes, pārmantojot no cita abstrakta veida, nepārkāpjot trūkstošās pazīmes, kas vajadzīgas klases definīcijas aizpildīšanai, vai nosūtot konkrētu metodi objektorientētam programmēšanas valoda, kas pazīstama kā šī un kas tieši neievieš metodi.

Saskarnes var definēt, izmantojot abstraktas metodes. Klases var ieviest arī saskarnēs. Ja klase patiešām ievieš saskarni un neīsteno visas tās metodes, ir jāizmanto apzīmējuma kopsavilkums, pretējā gadījumā tas nav nepieciešams (jo visas saskarnes pēc savas būtības ir abstraktas). Klases var arī ieviest vairākas saskarnes.

Kaut arī saskarnes tiek izmantotas vispārīgu saskarņu norādīšanai, abstraktus tipus var izmantot, lai definētu un ieviestu protokolu (kas ir darbību kopums, kuru jāatbalsta visiem objektiem, kuri ievieš vēlamo protokolu). Kopsavilkumu tipi valodās nepastāv bez apakštipa veidošanas. Tā kā šādi apakštipi ir spiesti ieviest visu nepieciešamo funkcionalitāti, nodrošinot programmas izpildes pareizību. Ir vairāki veidi, kā var izveidot abstraktus tipus: pilnas abstraktās pamatklases ir klases, kuras ir vai nu skaidri deklarētas kā abstraktas, vai satur abstraktas (neīstenotas) metodes; Parastās Lisp objektu sistēmas ietver maisījumus, kuru pamatā ir aromātu sistēma; Java, protams; un Traits, kas darbojas kā papildinājums Smalltalk.

Kopsavilkums:
1. Abstraktās klases (vai veidi) deklarē programmas; saskarnes ir abstrakti tipi, kas jāievieš visām klasēm, lai precizētu to saskarni.
2. Abstraktus tipus var apzīmēt, precīzi izmantojot atslēgas vārdu; saskarnes pēc savas būtības ir abstraktas, tāpēc tās vispār nav jāapzīmē, izmantojot atslēgvārdu (ja vien kāda noteikta klase neīsteno saskarni, bet neīsteno visas tās metodes).