Разлике између апстракције и сучеља Ц #
Сажетак класе и сучеља су врло важне методологије за учење за разумевање било које објектно оријентисане обуке програмирања. Обично су обоје веома збуњујући за почетни почетак учења ученика о објектно оријентисаном програмирању. Ако дефинишемо једну апстрактну класу, али не имплементирамо ништа, онда то апсолутно изгледа као интерфејс, нико неће моћи да разуме било какву разлику између њих уместо декларације. Међутим, постоји доста разлика и сличности између класе Интерфаце и Абстрацт.
Апстрактна класа је једноставна класа која се дефинише као апстрактна и не може се потицати. Апстрактна класа мора се проширити неким подкласама за употребу свих функција или корисности тог одређеног суперкласа или апстрактне класе. Заправо помаже у одржавању исправне хијерархије суперкласа или поткласа. Више подкласа може користити исти назив функционалности са различитим дефиницијама. Заправо осигурава да апликација треба следити одређену хијерархију или стандарде који омогућавају апликацији исправну разумљиву функционалност.
Интерфејс апсолутно није класа, баш као ентитет који је дефинисан једном одређеном речју Интерфаце. Интерфејс никада није дефинисао никакву дефиницију, у потпуности зависи од посебне декларације која би требало да наследи више класа истовремено. Више класа може дефинирати вишеструку дефиницију те појединачне изјаве једног одређеног сучеља. Такође садржи исту врсту објекта као што је класа Абстрацт, углавном помаже у одржавању једне исте хијерархије подразреда са другачијом дефиницијом. Али главна разлика између апстрактне класе и интерфејса је проширена са више апстрактних класа није могућа, док је наслеђивање више интерфејса могуће. Као што Ц # не подржава више насљеђивања, тако исту функцију пружа и интерфејс.
Поређење између главе и главе (Ц # Абстрацт анд Интерфаце (Инфограпхицс)
Испод је најбоља поређења између Ц # Абстрацт и Интерфаце
Кључне разлике између Ц # Сажетак и Сучеље
Неке кључне разлике су објашњене у даљем тексту између Ц # Абстрацт и Интерфаце
- Сажетак класе и сучеља заправо користе једна или више поткласа. Главно ограничење је да један подразред не може проширити више апстрактних класа значи да више насљеђивања не може бити могуће, док подразред може наслиједити више интерфејса одједном.
- Сажетак може садржати тело дефиницијом или само дефиницијом методе. Подкласа која проширује ову апстрактну класу може се користити методом тела и такође може објаснити детаље тела о било којој конкретној дефиницији апстрактне методе која значи да ће бити премошћен. Апстрактна класа треба да има најмање једну апстрактну методу (значи једину дефиницију методе без тела). Интерфејс има само дефиницију методе, не треба да садржи било које детаље тела у вези са методом дефинирања. Једно насљеђивање подразреда које користи сучеље и користи оне које не дефинирају методу динамичким давањем одговарајућих детаља тијела за више поткласа.
- Апстрактна класа може имати различите модификаторе приступа као што су јавни, приватни или заштићени, тако да било која метода или својства унутар апстрактне класе могу дефинирати различите модификаторе приступа. Док Интерфејс не може дати било који модификатор приступа, тако да би сва својства или методе дефиниране унутар интерфејса требало да буду модификатор јавног приступа, немају могућност дефинисања другог модификатора приступа унутар интерфејса.
- Концепт суперкласе и подразреда управо је савршен за апстрактни разред. Апстрактној класи се може дати основни идентитет подразреда, она обично садржи сличну врсту објекта одређеног подразреда. Док интерфејс обично дефинише једну специфичну врсту периферне активности класе. Претпоставимо да имамо једно име интерфејса: Мовеабле, сада овај интерфејс може да наследи и аутомобил и и једно и друго. Док су аутомобили и људи потпуно другачији предмет класе и немају међусобне везе.
- Ако апликација има различите имплементације, али је активност те специфичне имплементације готово иста, онда је боље користити апстрактну класу, гдје можете дефинирати ту одређену логику и сви поткласи могу лако приступити истој логици сваки пут. Као пример повезивања базе података, које обично користе све поткласе, тако да ако се ова генерација повезивања и код за затварање могу држати у апстрактној класи, било би лако било којем подкласу да приступи истој. Док вишеструке имплементације желе да деле само потпис методе, онда је Интерфејс увек бољи.
Табела поређења Ц # Сажетак и сучеље
Следи табела упоређивања између Ц # Абстрацт и Интерфаце
ОСНОВА ЗА
Упоређивање | Сажетак | Интерфејс |
Вишеструко наслеђивање | Једна поткласа може проширити само једну апстрактну класу, а не вишеструку. | Једна поткласа може имплементирати више интерфејса који помажу да се опорави не подржава функцију вишеструког насљеђивања Ц #. |
Дефиниција класе | Интерфејс никада не дефинише ниједан одређени део дефиниције, он само садржи дефиницију коју је правилно правилно имплементирао подкласа касније. | Сажетак може држати читаво тело с дефиницијом, а може држати и једину дефиницију попут интерфејса који може надјачати било која подкласа. Било која апстрактна класа треба да има бар једну апстрактну методу која садржи само детаље дефиниције, тело ће бити описано касније у поткласи. |
Приступни модификатор | Интерфејс никада у својој дефиницији нема модификатор приступа. Интерфејс обично сматра да су сва својства јавна. | Апстрактна класа може имати модификатор приступа за своју дефиницију. Дакле, све некретнине могу бити јавне, приватне или заштићене. |
Перформансе | Обично је потребно мало више времена да би се сазнала одговарајућа метода подразреда. | Мало је бржи од интерфејса. |
Закључак
Интерфејс и класа Сажетак углавном се користе за интелигентно управљање вишеструким имплементацијама тако да се сувишни код лако може избећи и све је у одговарајућој хијерархији и структури. Интерфејс ће увек бити бољи за дељење истог потписа у више инстанци. Претпоставимо да панталоони имају једну главну грану, а такође има више грана на различитим локацијама. Сада се један одређени производ може лансирати на одређеној локацији једним приступом, док се на другој локацији лансира другачијим приступом. У том случају логика, која би се за исти производ разликовала на више локација, овом логиком се може боље управљати помоћу сучеља. Сада за исти производ могу постојати неке заједничке карактеристике које морају бити истакнуте у свакој грани у време лансирања тог производа. У том случају да бисте избегли сувишност кода додајте исту логику у апстрактну класу и можете је користити у вишеструким имплементацијама у различитим гранама.
Препоручени чланак
Ово је био користан водич за разлике између Ц # Абстракта и интерфејса. Овде смо разговарали о упоређивању, од кључне речи, заједно са инфографиком. Такође можете погледати следећи чланак да бисте сазнали више -
- Ц # интерфејс вс апстрактна класа
- Јава интерфејс вс апстрактна класа
- Интерфејс за типесцрипт вс класу
- ТипеСцрипт Типе вс интерфејс
- Приступите модификаторима на ПХП-у
- Сажетак наставе у ЈаваСцрипт-у