Разлика између интерфејса и апстрактне класе у Јави

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

Јава, Ц ++, Ц # су сви компликовани програмски језици који захтевају детаљну студију и разумевање да би могли да раде. Постоји много различитих метода које се користе на овим језицима које одређују како ће језик функционисати. Интерфејс и апстрактна класа су два конфузна концепта који су део ООП-а (објектно оријентисано програмирање). Ова два могу се користити појединачно или заједно. Ова два су потпуно различита и користе се у различитим случајевима.

Јава је програмски језик, на који је утицао Ц језик. Већи део његове синтаксе произилази из Ц и Ц ++, али има мање објеката нижег нивоа од оба. Јава је програмски језик опште намене који је дизајниран тако да има мање зависности од имплементације у односу на претходне језике. Он је конкурентан, заснован на класи и објектно оријентисан језик.

Јава је развио Јамес Гослинг у Сун Мицросистемс и објављен је 1995. године. Првобитно је објављен као кључна компонента Јава платформе Сун Мицросистемс. Од тада је лиценцирала већину својих Јава технологија под ГНУ Генерал Публиц Лиценсе. То значи да је сва технологија лиценцирана под ГНУ Опћом јавном лиценцом отвореног кода и опћенито доступна бесплатно. Сун Мицросистемс се на крају спојио у Орацле Цорпоратион. Од 2012. године, Јава је постала један од најпопуларнијих програмских језика за употребу. Ово посебно важи за клијент-сервер веб апликације. Многи други системи су развили алтернативне имплементације Сун технологија, као што су ГНУ Цомпилер за Јава и ГНУ Цласспатх.

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

Апстрактна класа је класа објеката који се не могу инстанцирати или поставити инстанцу објекта. Ова класа можда нема имплементацију или може имати непотпуну имплементацију. Такође може да има апстрактне методе или особине које су заједничке свим под-класама. У неким програмским језицима, апстрактни типови без имплементације познати су као интерфејси. У Јави, апстрактни тип се може креирати помоћу кључне речи 'абстрацт' у дефиницији класе. Сврха је имати апстрактну класу за постављање свих метода које нису имплементиране у апстрактну класу и препустити подкласи да одреди како имплементирати те класе. Ако класа има једну апстрактну методу, класа мора бити декларисана као апстрактна класа, иако не треба да има барем једну јединствену методу за декларисање апстракта класе.

Малликталксјава.ин наводи главне разлике између интерфејса и апстракта као:

  • Апстрактна класа има конструктора, али интерфејс не.
  • Апстрактне класе могу имати имплементације за неке од својих чланова (Метходс), али интерфејс не може имати имплементацију за било који од својих чланова.
  • Апстрактна настава треба да има подкласу која би била бескорисна.
  • Интерфејси морају имати имплементације других класа које ће бити бескорисне
  • Само интерфејс може проширити други интерфејс, али свака класа може проширити апстрактну класу.
  • Све променљиве у интерфејсима су подразумевано коначне
  • Интерфејси пружају облик вишеструког наслеђивања. Класа може проширити само још једну класу.
  • Интерфејси су ограничени на јавне методе и константе без имплементације. Апстрактне класе могу имати дјелимичну имплементацију, заштићене дијелове, статичке методе, итд.
  • Класа може имплементирати неколико интерфејса. Али у случају апстрактне класе, класа може проширити само једну апстрактну класу.
  • Интерфејси су спори јер захтева додатну индиректност да би се пронашао одговарајући метод у класи. Апстрактни часови су брзи.
  • Модификатор приступачности (јавно / приватно / интерно) је дозвољен за апстрактну класу. Интерфејс не дозвољава модификатор приступачности
  • Апстрактна класа може да садржи комплетне или некомплетне методе. Интерфејси могу да садрже само потпис методе, али не и тело. Тако апстрактна класа може имплементирати методе, али интерфејс не може имплементирати методе.
  • Апстрактна класа може да садржи поља, конструкторе, или деструкторе и својства имплементације. Интерфејс не може да садржи поља, конструкторе или деструкторе и има само потпис власништва, али нема имплементацију.
  • Различити модификатори приступа као што су апстрактни, заштићени, интерни, јавни, виртуални итд. Корисни су у апстрактним класама, али не у интерфејсу.
  • Апстрактни опсег је до изведене класе.
  • Опсег интерфејса је до било ког нивоа његовог ланца наслеђивања.

Информације за табелу су захваљујући цодепројецт.цом и миндпрод.цом

Интерфејс

Абстрацт Цласс

Мултипле инхеританце

Класа може наследити неколико интерфејса.

Класа може наследити само једну апстрактну класу.

Дефаулт имплементатион

Интерфејс не може дати никакав код, само потпис.

Апстрактна класа може да обезбеди комплетан, подразумевани код и / или само детаље који се морају заменити.

Модификатори приступа

Интерфејс не може имати модификаторе приступа за субс, функције, својства итд. Све се претпоставља као јавно.

Апстрактна класа може да садржи модификаторе приступа за субс, функције, својства.

Цоре вс. Перипхерал

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

Апстрактна класа дефинише основни идентитет класе и тамо се користи за објекте истог типа.

Хомогеност

Ако различите имплементације деле само потписе метода онда је боље користити интерфејсе.

Ако су различите имплементације исте врсте и користе заједничко понашање или статус онда је апстрактна класа боље користити.

Брзина

Потребно је више времена да се пронађе стварна метода у одговарајућим класама.

Брзо

Додавање функционалности

Ако додамо нову методу интерфејсу онда морамо да пратимо све имплементације интерфејса и дефинишемо имплементацију за нови метод.

Ако додамо нову методу у апстрактну класу онда имамо опцију пружања подразумеване имплементације и стога би сав постојећи код могао исправно функционисати.

Поља и константе

Поља не могу бити дефинисана у интерфејсу.

Апстрактна класа може имати дефинисана поља и константе.

Терсенесс

Декларације константи у интерфејсу су све претпостављене јавне статичке коначне.

Дељени код се може додати у апстрактну класу.

Константе

Само статичне коначне константе, могу их користити без квалификација у класама које имплементирају интерфејс.

Могуће су и инстанце и статичке константе. И статички и инстанциони интиалисер код су такође могући за израчунавање константи.

Погодност треће стране

Имплементација интерфејса може се додати било којој постојећој класи треће стране.

Класа треће стране мора бити преписана да би се проширила само из апстрактне класе.

је -а-или-могу или могу-урадити

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

Апстрактна класа дефинише суштински идентитет његових потомака. Имплементирани интерфејси набрајају опште ствари које класа може да уради, а не оно што је класа.

У контексту Јава, корисници би обично требали имплементирати Руннабле сучеље умјесто проширивања Тхреад-а, јер они заправо нису заинтересирани за пружање неке нове Тхреад функционалности, они обично само желе да неки код има способност самосталног рада. Желе да створе нешто што се може изводити у нити, а не у новој врсти нити. Сличан је - а вс. хас - дебата долази када одлучите да наслиједите или делегирате.

Повезати

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

Корисник мора користити апстрактну класу као-је за базу кода, са свим пратећим пртљагом, добрим или лошим. Аутор апстрактне класе је кориснику наметнуо структуру.

Одржавање

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

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

Рецоммендед

Везани Чланци

  • популарна поређења: Разлика између појединачног и вишекорисничког оперативног система

    Разлика између појединачног и вишекорисничког оперативног система

    Кључна разлика: Оперативни систем за једног корисника је систем у којем само један корисник може приступити рачунарском систему истовремено. С друге стране, вишекориснички оперативни систем дозвољава више од једног корисника да истовремено приступају компјутерском систему. Оперативни систем је један од најважнијих програма који се покрећу на рачунару или серверу. То се назива основни софтвер који помаже у обављању основних функција као што су покретање програма, управљање ресурсима, манипулисање датоте
  • популарна поређења: Разлика између СЛР и дигиталне камере

    Разлика између СЛР и дигиталне камере

    Кључна разлика: СЛР је камера која има аутоматски покретни систем огледала кроз који се може снимити одређена слика. Покретно огледало манипулише, управља и контролише светло које пада на огледало. Дигитална камера је такође позната као дигицам. Они су наследници нормалне технологије камере која више не користи филмове. СЛР и дигиталне камере су два различита
  • популарна поређења: Мостли сунни

    Мостли сунни

    Кључна разлика: Углавном је сунчано када је просјечно небо прекривено 1/8 до 2/8 са непрозирним облацима. Делимична облачност је када је просечно небо прекривено 3/8 до 4/8 са непрозирним облацима. Време је веома важан аспект дана особе и може утицати на расположење особе на различите начине. Данас се време може посматрати на много начина, на теле
  • популарна поређења: Разлика између хомосексуалаца и хетеросексуалаца

    Разлика између хомосексуалаца и хетеросексуалаца

    Кључна разлика: Термин 'хомосексуалац' се користи за људе који су привучени истим полом и имају сексуално понашање за исти род. Хетеросексуалци су људи који су привучени људима супротног пола. Хомосексуалност, заједно са бисексуалношћу и хетеросексуалношћу, су три главне категорије сексуалне оријентације; понекад је укључена и асексуалност. Хомосек
  • популарна поређења: Разлика између 60Хз и 120Хз ЛЦД ТВ

    Разлика између 60Хз и 120Хз ЛЦД ТВ

    Кључна разлика: Телевизор са фреквенцијом одзива од 60 Хз може поново исцртати слику 60 пута у секунди, док ТВ са 120Хз одговора може поново да исцрта слику 120 пута у секунди. Може се десити да 60Хз није увек у могућности да прати слике са брзим темпом и може да доведе до трзања или замућења слика. 120Хз м
  • популарна поређења: Разлика између ВАВ и АИФФ формата аудио датотека

    Разлика између ВАВ и АИФФ формата аудио датотека

    Кључна разлика: ВАВ и АИФФ су у основи исти тип датотеке. ВАВ је скраћеница од Вавеформ Аудио Филе Формат. С друге стране, АИФФ је скраћеница од Аудио Интерцханге Филе Формат. ВАВ и АИФФ су у суштини исти тип датотеке. Они су некомпримовани формати, што значи да су то тачне копије оригиналног извора звука. ВАВ зна
  • популарна поређења: Разлика између брадавица и плантарне брадавице

    Разлика између брадавица и плантарне брадавице

    Кључна разлика: брадавица је груби раст који се најчешће појављује на рукама и прстима или на табанима. Могу се појавити и на другим деловима тела као што су лице, руке или ноге, а понекад и расту у гениталном или аналном подручју. Плантарна брадавица је врста брадавице. Оба су узрокована ХПВ-ом или хуманим папилома вирусом. Брадавице су честе болести узроковане ХПВ вирусом. Брадавица је груби раст који се најчеш
  • популарна поређења: Разлика између досаде и монотоније

    Разлика између досаде и монотоније

    Кључна разлика: и досада и монотонија примењују незаинтересованост за рад. Досада је субјективно стање, када особа није заинтересована због редовног откривања или третмана. С друге стране, монотонија је стање када је особи досадно да ради понављајући посао или активност. Досада и монотонија често се преклапају. Људи
  • популарна поређења: Разлика између ислама и католицизма

    Разлика између ислама и католицизма

    Кључна разлика: католицизам верује у Исуса Христа као Божјег сина и обећаног Месије народа. Ислам вјерује да су Исус и Мухамед пророци Господњи и задужени да донесу истиниту Божју ријеч људима. Ислам и католицизам су монотеистичке абрахамске религије, што значи да могу пратити њихово заједничко порекло до Абрахама. Католицизам је највећа и најбогатиј

Избор Уредника

Разлика између Самсунг Галаки Мега 5.8 и Самсунг Галаки С3

Кључна разлика: Самсунг је проширио своју понуду у категорији пхаблет увођењем Самсунг Галаки Мега 5.8 и Самсунг Галаки Мега 6.3. Самсунг Галаки Мега 5.8 је назван таквим због 5, 8-инчног ТФТ екрана осетљивог на додир, резолуције 540 к 960 пиксела. Телефон се напаја помоћу дуал-цоре 1.4 ГХз процесора са 1.5 ГБ РАМ-а. Галаки С3 је мулти-тоуцх смартпхоне који се појавио у мају 2012. С3 поседује 4, 6 ХД Супер АМОЛЕД екран са цорнинг