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

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

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

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

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

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

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

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

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

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

Интерфејс

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

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

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

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

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

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

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

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

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

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

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

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

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

Хомогеност

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

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

Брзина

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

Брзо

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

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

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

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

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

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

Терсенесс

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

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

Константе

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

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

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

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

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

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

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

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

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

Повезати

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

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

Одржавање

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

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

Рецоммендед

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

  • разлика између: Разлика између ламината и фурнира

    Разлика између ламината и фурнира

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

    Разлика између океана и залива

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

    Разлика између Сони Кспериа С и ХТЦ Оне Кс

    Кључна разлика: Кспериа С поседује 4, 3-инчни ТФТ екран осетљив на додир са непробојним листом на стаклу отпорном на огреботине. Екран пружа импресивну густину од 342 ппи и покреће га Куалцомм Дуал-Цоре процесор од 1.5 ГХз. ХТЦ Оне Кс је популаран производ ХТЦ корпорације. Она долази са Андроид в4.0 Ице Цреам Сандвицх и може се надоградити на в4.1.1 Јелли Беан. Укључује 1.5 ГХз, куад-
  • разлика између: Разлика између Сони Кспериа Е и КСОЛО К800

    Разлика између Сони Кспериа Е и КСОЛО К800

    Кључна разлика: Сони Кспериа Е и Е-Дуал су два основна телефона компаније Сони Мобиле. Телефон се испоручује са 3.5 ТФТ капацитетом који има ~ 165 ппи густине пиксела. Долази са 1 ГХз Цортек-А5 Куалцомм Снапдрагон процесором, Адрено 200 ГПУ и 512 МБ РАМ-а. Ксоло К800 је четворојезгрени 1.2 ГХз смартпхоне са МТК МТ6589 и 1 ГБ РАМ-а. Телефон ради на Андроиду 4.1 (Јелли Беан). Поседује 4, 5 инчни екран резолуције 540 к 960 пиксела. Сони је попул
  • разлика између: Разлика између софтвера и апликације

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

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

    Разлика између Алцател Оне Тоуцх Идол Ултра и Нокиа Лумиа 820

    Кључна разлика: Алцател Оне Тоуцх Идол Ултра поседује 4.65 инчни ХД АМОЛЕД капацитивни екран осетљив на додир са резолуцијом 720 к 1280 пиксела. Телефон се напаја помоћу дуал-цоре 1.2 ГХз процесора на МедиаТек МТК 6577 и 1 ГБ РАМ-а. Телефон има ширину од 6.45мм, што га је навело да га промовише као најтањи смартпхоне
  • разлика између: Разлика између тостера и тостера

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

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

    Разлика између киселине и базе

    Кључна разлика: Киселине и базе су две врсте корозивних супстанци. Свака супстанца која има пХ вредност између 0 до 7 сматра се киселом, док је пХ вредност од 7 до 14 база. Киселине су јонска једињења која се раздвајају у води да би се формирао водонични јон (Х +). Јонска једињења су једињења са позити
  • разлика између: Разлика између пацова и миша

    Разлика између пацова и миша

    Кључна разлика : пацов је средњи до велики глодавац, са шиљастом њушком, дугим витким и бездлаким репом и спретним предњим вилицама. Миш је мали сисавац, величине врабца. Обично има шиљасту њушку, мале заобљене уши и дуги голи или готово без длаке реп. Пацови и миш се често збуњују као да су исти због слич

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

Разлика између рада и рада

Кључна разлика: Начин писања речи зависи од места и од кога је текст написан. Британски енглески (популарнији) користи правописни 'рад', док амерички енглески не види разлог за 'у' и користи правопис 'рад'. Обе речи значе исту ствар. Појмови рада и рада често збуњују многе људе који уче енглески као други језик. Разлог за ову конфузију произлази из многих текстова к