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

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

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

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

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

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

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

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

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

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

Интерфејс

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

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

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

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

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

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

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

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

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

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

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

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

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

Хомогеност

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

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

Брзина

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

Брзо

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

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

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

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

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

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

Терсенесс

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

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

Константе

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

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

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

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

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

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

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

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

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

Повезати

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

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

Одржавање

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

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

Рецоммендед

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

  • разлика између: Разлика између пергаментног папира и алуминијумске фолије

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

    Кључна разлика: Папир за пергамент, познат и као папир за печење, је папир на бази целулозе који се углавном користи за печење као замена за подмазивање. Алуминијумска фолија је танак слој алуминијума дебљине мање од 0, 2 милиметра и може се користити за различите ствари око куће. Папир за пергамент и алуминијумске фолије су два различита типа амбалаже и материјала за кување који се користе око куће. Папир за пергамент заправо личи на папир и користи се углавном за печење. Користи се као алтернатива за
  • разлика између: Разлика између Јава и Ц #

    Разлика између Јава и Ц #

    Кључна разлика: Јава је програмски језик, на који је утицао језик Ц. Већи део његове синтаксе произилази из Ц и Ц ++, али има мање објеката нижег нивоа од оба. Јава је програмски језик опште намене који је дизајниран тако да има мање зависности од имплементације у односу на претходне језике. Ц #, познат и као Ц схарп, је објектно оријентисани програмски језик. Ц # је програмски језик за више парадигми. Ц # је заснован на Ц програмском језику. Изворно га је развио Андерс Хејлсберг за Мицрософт за употребу у свом .НЕТ окв
  • разлика између: Разлика између палминог уља и кокосовог уља

    Разлика између палминог уља и кокосовог уља

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

    Разлика између модификованог стабла и модификованог корена

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

    Разлика између Самсунг Галаки С Дуос и Самсунг Галаки С2

    Кључна разлика: Самсунг Галаки С Дуос је дуал СИМ телефон који је лансиран у септембру 2012. Телефон долази са 4-инчним ТФТ капацитивним екраном осетљивим на додир, са приближно 233 ппи густине. Уређај долази са Самсунг ТоуцхВиз интерфејсом на Андроид 4.0.4 ИЦС-у. Самсунг Галаки С2 је лансиран у априлу 2011. и био је један од најтањијих смарт
  • разлика између: Разлика између Мицрософт Сурфаце РТ и Делл КСПС 10 Таблета

    Разлика између Мицрософт Сурфаце РТ и Делл КСПС 10 Таблета

    Кључна разлика: Мицрософт Сурфаце РТ је таблет који има 10, 6-инчни ТФТ ХД капацитивни екран осетљив на додир са густином отприлике 148 ппи. Екран пружа прави однос слике 16: 9. Међутим, оперативни систем није компатибилан са старим Виндовс ПЦ програмима. Делл КСПС 10 је 10.1-инчни таблет који се испоручује
  • разлика између: Разлика између Делл Латитуде 10 Виндовс Таблет и Асус Падфоне Инфинити

    Разлика између Делл Латитуде 10 Виндовс Таблет и Асус Падфоне Инфинити

    Кључна разлика: Латитуде 10 таблет је прилично гладак и лаган на 658 грама. Уређаји се испоручују са 10.1-инчним ИПС (1366 Кс 768) широким углом ЛЦД капацитивним екраном осетљивим на додир и покреће га 1.8 ГХз Интел Атом З2760 процесор. Асус Падфоне Инфинити смартпхоне је гладак 5-инчни Фулл ХД 1920к1080, Супер ИПС + са Капацитивним Мулти тоуцх пане
  • разлика између: Разлика између иПхоне 6С и иПхоне 6С Плус

    Разлика између иПхоне 6С и иПхоне 6С Плус

    Кључна разлика: иПхоне 6С и иПхоне 6С Плус се разликују по величини екрана. Док иПхоне 6С долази са 47-инчним ЛЕД ИПС екраном, 750 к 1334 пиксела и 326 ппи, иПхоне 6С Плус долази са 5.5-инчним ЛЕД ИПС екраном, 1920 к 1080 пиксела и 401 ппи. Аппле је недавно најавио најновији додатак својој водећој линији. Про
  • разлика између: Разлика између Асус ПадФоне Инфинити и Нокиа Лумиа 920

    Разлика између Асус ПадФоне Инфинити и Нокиа Лумиа 920

    Кључна разлика: Асус Падфоне Инфинити смартпхоне је гладак 5-инчни Фулл ХД 1920к1080, Супер ИПС + са Цапацитиве Мулти тоуцх панелом и обезбеђује приближно 441 ппи густину. Уређај је бар телефон, са закривљеним угловима који му дају сличан изглед као 'иПхоне' и 'ХТЦ Оне'. Асус Падфоне Инфинити Доцк је у основи 10-инчни кућиште таблета које омогућава корисницима да прикључе свој телефон у таблет, тако што ће га гурнути у утор на полеђини. Један од првих смарт телефона под б

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

Разлика између ХД и Фулл ХД

Кључна разлика: ХД се обично односи на слике са 720 хоризонталних линија или више. Резолуција 720п је комерцијално позната као ХД Реади. Док су производи који могу приказати 1080п видео записе означени као Фулл ХД. ХД или Хигх-дефинитион је тренутно бес. Изгледа да сватко жели ХД телевизију или жели гледати ХД видеозаписе. Међутим, многи људи не схватају шта ХД заправо подразу