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

Сажетак класе и сучеља на Јави

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

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


Разлике

Најпре, апстрактна класа омогућава поља која нису статична или коначна за разлику од статичких и завршних поља која се користе у интерфејсима. Интерфејси не могу имати ниједан код за имплементацију који се користи у њима, а постоји и код за имплементацију који се користи у апстрактној класи. Имплементациони кодови уведени у апстрактну класу могу имати неколико или свих имплементираних метода. Подразумевано су све методе интерфејса „апстрактне“.

Видљивост је могућа и за методе или чланове апстрактне класе која може варирати као јавна, заштићена, приватна или ниједна. С друге стране видљивост интерфејса може се подесити само на један вид видљивости који је „јавни“.

Апстрактна класа ће аутоматски наслиједити класу објекта. То, у ствари, значи да су укључене методе попут клона () и једнаке (). У интерфејсу није могуће наслеђивање класе објекта. Након тога, апстрактна класа може имати конструктор, али интерфејс не може имати њу.

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

У перформансама, интерфејси имају тенденцију споријег у примени, за разлику од апстрактне класе, углавном због додатног смера проналажења одговарајуће методе у класи. Разлика је, међутим, постала спорија због савремених Јава виртуелних машина које се непрестано надограђују.

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

Резиме

  1. Поља апстрактних класа нису статична или коначна за разлику од интерфејса који има статичке и завршне табеле.

  2. Ниједан код за имплементацију не може се користити у интерфејсима док се може користити у апстрактној класи.

  3. Видљивост сучеља може бити јавна док апстрактна видљивост класе може варирати.

  4. Апстрактна класа ће аутоматски наслиједити објектну класу, али у интерфејсу то није могуће.

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