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

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

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

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

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

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

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

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

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

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

Интерфејс

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

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

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

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

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

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

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

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

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

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

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

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

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

Хомогеност

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

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

Брзина

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

Брзо

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

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

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

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

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

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

Терсенесс

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

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

Константе

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

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

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

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

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

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

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

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

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

Повезати

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

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

Одржавање

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

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

Рецоммендед

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

  • популарна поређења: Разлика између овлаживача и хладне креме

    Разлика између овлаживача и хладне креме

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

    Разлика између диода и исправљача

    Кључна разлика: Диода је тип електричног уређаја који омогућава струји да се креће кроз њу само у једном смјеру. Састоји се од полупроводника типа Н и полупроводника типа П који се постављају заједно. Исправљачи су електронски уређаји који се користе за претварање измјеничног напона у једносмјерни пулсирајући истосмјерни напон. Диоде се често користе у пројектов
  • популарна поређења: Разлика између Фулл Бед и Куеен Бед

    Разлика између Фулл Бед и Куеен Бед

    Кључна разлика: Цијели кревет односи се на кревет за опуштање или спавање, који мјери 54 ”к 75”. Док, краљица кревет се такођер односи на кревет за опуштање, одмор и спавање, али то мјере 60 "к 80". Кревет је комад намештаја, обично равна и мека, и користи се за спавање или за опуштање. Непогрешиво време се проводи у кревету за оне који се жел
  • популарна поређења: Разлика између дневне и дневне куће

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

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

    Разлика између ВПН и АПН

    Кључна разлика: ВПН, скраћено од виртуелне приватне мреже, је мрежа која штити приватне информације које се шаљу преко јавне телекомуникационе мреже. АПН, скраћено од назива приступне тачке, штити поверљиве информације које се шаљу преко јавне телекомуникационе мреже. ВПН (Виртуал Привате Нетворк) и АПН (Аццесс Поинт Наме) су два различита начина да људи размењују податке преко мреже. ВПН, скраћеница од Виртуал Привате Нетворк, је мрежа која штити повјерљиве информације које се шаљу путе
  • популарна поређења: Разлика између НиМХ и мАх батерија

    Разлика између НиМХ и мАх батерија

    Кључна разлика: НиМХ је врста пуњиве батерије. мАх је израчунавање енергије коју батерија може испоручити. НиМХ и мАх су оба термина који се најчешће користе са батеријама, посебно пуњивим батеријама. Пуњиве батерије су постале одлична економична алтернатива за употребу стандардних батерија за једнократну употребу, јер се могу пунити до 1000 пута пре него што је
  • популарна поређења: Разлика између ЛАН-а и Етхернета

    Разлика између ЛАН-а и Етхернета

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

    Разлика између Ек гратиа и Бонуса

    Кључна разлика: Ек гратиа се односи на чин донације који је настао због моралне обавезе, а не законских обавеза, док је бонус додатна новчана корист која се обично даје запосленом како би се препознао његов допринос или учинак. Оксфордски речник дефинише ек гратиа као „(у односу на плаћање) учињено из моралне обавезе, а не због било каквог законског захтева“. Изводи се од латинског што значи "из корист&q
  • популарна поређења: Разлика између салса и јазза

    Разлика између салса и јазза

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

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

Разлика између дрвета и биљке

Кључна разлика: Дрвеће и биљке спадају под исту Плантае Кингдом, која је једна од пет највећих Краљевстава. Дрвеће и биљке имају много више заједничког него разлику. Може се рећи да док су сва стабла биљке, не могу све биљке бити дрвеће. Када говоримо о разликама између дрвета и биљке, на памет дола