Разлика између класе апстракције и сучеља

Сажетак класе у односу на сучеље

Сажетак класе (или типа) је тип у номинативном систему који је програм прогласио. Иако назив таквог подразумева, апстрактна класа може или не мора садржавати апстрактне методе или својства. Класа разликовања односи се на различите језичне конструкције које се могу користити за имплементацију апстрактних типова. Сажетак наставе може се окарактерисати проблемом дизајна који је у складу с најбољим објектно оријентисаним програмирањем и њиховом незавршеном природом.

Интерфејс је апстрактни тип који класа мора имплементирати да би одредила интерфејс (генерално гледано). Сучеља могу садржати само потписе метода и константне декларације (и статичке и коначне), никада дефиниције метода. Сучеља симулирају више насљеђивања и користе се за кодирање сличности које се дијеле између различитих врста класа.

Апстрактни типови се могу креирати, означавати или симулирати на више различитих начина. Програмер може означити апстрактне типове експлицитним коришћењем кључне речи сажетак, укључивањем једне или више метода у дефиницији класе, наслеђивањем од другог апстрактног типа без поништавања недостајућих функција неопходних за довршавање дефиниције класе или слањем одређене методе објектно оријентисаној програмски језик познат као овај који методу не имплементира директно.

Интерфејси могу да се дефинишу апстрактним методама. Класе се такође могу имплементирати у интерфејсима. Ако класа имплементира интерфејс и не имплементира све своје методе, мора се употријебити сажетак означитеља, иначе тај означитељ није потребан (јер су сва сучеља суштински апстрактна). Класе такође могу имплементирати више интерфејса.

Док се интерфејси користе за одређивање генеричких интерфејса, апстрактни типови се могу користити за дефинисање и наметање протокола (што је скуп операција који морају подржавати сви објекти који имплементирају жељени протокол). Сажеци се не јављају на језицима без подврставања. Као такви подтипови приморани су да примене све потребне функционалности, обезбеђујући исправност извршавања програма. Постоји неколико начина на који се могу створити апстрактни типови: пуне апстрактне основне класе су класе које су или изричито проглашене апстрактним или садрже апстрактне (неимплементиране) методе; Уобичајени систем Лисп-ових објеката укључује миксете који се заснивају на систему Ароме; Јава, наравно; и својства, која делује као продужетак Смаллталк-а.

Резиме:
1. Сажетак (или врсте) декларишу програме; интерфејси су апстрактни типови које све класе морају имплементирати да би одредиле своје интерфејс.
2. Апстрактни типови могу се означити коришћењем кључне речи изричито; интерфејси су сами по себи апстрактни, па их уопште не треба означавати помоћу кључне речи (осим ако одређена класа имплементира интерфејс, али не имплементира све своје методе).