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

Оба апстрактна класа и сучеље се примарно користе за апстракцију, али се врло разликују једна од друге. Обоје су основни део Јаве, али имају сопствене апликације. Иако су оба термина међусобно синонимна, они се не могу међусобно заменити.

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

Шта је апстрактна класа на Јави?

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

Апстрактна класа може или не мора садржавати методе апстракције (методе без тела), али ако класа има најмање једну методу апстракције, мора се прогласити апстрактном. Међутим, не-апстрактне методе могу се користити и у апстрактној класи, али само за имплементацију заданог понашања. Методе у апстрактној класи могу имати модификаторе приступа као што су приватни, јавни, статички и заштићени, у зависности од нивоа видљивости. Апстрактна класа не може бити инстанцирана и не пружа 100-постотну апстракцију због чињенице да може имати конкретан метод.

Шта је интерфејс?

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

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

  1. „Вишеструко наслеђивање“ апстрактне класе и сучеља на Јави - Упркос чињеници да се и апстрактна класа и интерфејс примарно користе за апстракцију, они се прилично разликују један од другог. Док је апстрактна класа класа, интерфејс је интерфејс. То значи да док интерфејс може проширити само други Јава интерфејс, апстрактна класа може имплементирати више наслеђивања у Јави. Па, Јава не подржава више насљеђивања, али у Јави се може примијенити више насљеђивања.
  2. „Метода типа“ апстрактне класе и сучеља на Јави - Друга главна разлика између њих је да, док интерфејс може имати само апстрактне методе, апстрактна класа може имати и апстрактне и не-апстрактне методе. Међутим, будући да Јава 8, интерфејс може да има и задане и статичке методе.
  3. „Приступни модификатори“ апстрактне класе и сучеља на Јави - Апстрактна класа може имати јавне, приватне и заштићене модификаторе приступа, међутим методе сучеља су имплицитно јавне и апстрактне. Не можете користити било који други модификатор приступа помоћу метода интерфејса '.
  4. „Имплементација“ апстрактне класе и сучеља у Јави - Апстрактна класа може да обезбеди имплементацију интерфејса. Интерфејс, с друге стране, не може да пружа имплементацију апстрактне класе.
  5. „Кључна реч“ апстрактне класе и сучеља на Јави- Иако се кључна реч "апстрактно" користи да би се метода апстрактне класе прогласила апстрактном, међутим, сучеља су потпуно другачија прича; могу имати само јавне, статичке коначне константе и декларације о методама.
  6. „Употреба“ апстрактне класе и сучеља на Јави - Иако је сучеље идеално за декларацију типа, апстрактна класа је најприкладнија за поновну употребу кода и перспективу еволуције. Интерфејс изгледа као класа, али није класа.
  7. „Поузданост“ апстрактне класе и сучеља на Јави- Друга велика разлика између апстрактне класе и интерфејса је та што је прва мало бржа од друге јер је претрага обично укључена у интерфејс пре него што се на Јави позове било који прекидани метод.
  8. „Финалне променљиве“ апстрактне класе и сучеља на Јави - Променљиве декларације у интерфејсу су подразумевано коначне, док апстрактна класа може или не мора садржавати не-коначне променљиве.

Апстрактни разред и сучеље на Јави: упоредна табела

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

Резиме тачака о абстрактном разреду и сучељу на Јави

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