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

Интерфејс ће одредити шта треба да ради класа, али не и како. То је у основи нацрт за клас. Променљиве варијабле декларисане у интерфејсу су јавне, статичке и крајње. Класа која је декларирана кључном речју "апстрактна" назива се апстрактном класом Класа која је изведена из класе Сажетак мора дефинисати све методе које су деклариране као апстрактне у апстрактној класи.

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

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

Шта је сажетак?

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

Упоредна упоредба између Јава интерфејса и апстрактне класе (Инфограпхицс)

Испод је 9 најбољих поређења Јава интерфејса са апстрактном класом

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

Оба Јава интерфејса и апстрактна класа популарни су избор на тржишту; разговарајмо о неким главним разликама између Јава интерфејса и апстрактне класе:

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

Табела поређења Јава интерфејс вс апстрактна класа

Следи табела упоређивања између Јава интерфејса и апстрактне класе

Основе поређења Јава интерфејса и класе апстракцијеСажетакЈава интерфејс
Тип методеСажетак класе може имати и апстрактне (методе без тела) и не-апстрактне (методе са телом) методеУ интерфејсу можемо да имамо само апстрактне методе. Од Јава 8, интерфејс може такође имати статичке и задане методе
СинтаксаСажетак класе може бити проглашен на следећи начин:
јавна апстрактна разредна школа (Јавна апстрактна воид класа ();
јавна апстрактна воид јакост ();)
Интерфејс се може декларисати на следећи начин:
облик јавног сучеља (Воид драв_рецт (); Воид драв_скуаре ();)
Коначна променљиваАпстрактна класа може имати завршне и не-коначне променљиве.Док интерфејс може имати само крајње променљиве јер су променљиве коначне у интерфејсу.
ИмплементацијаАпстрактна класа може осигурати имплементацију свих апстрактних метода у интерфејсу.Док у интерфејсу не можемо да пружимо имплементацију апстрактне класе.
Тип променљивогАпстрактна класа може имати све врсте променљивих тј. Завршне, не-коначне, статичке, нестатичке, приватне, јавне итд.Док интерфејс може имати само јавне, статичке и крајње променљиве.
Чланови података ПриступачностАпстрактна класа може имати чланове класе као приватне, заштићене, јавне итд.Интерфејс може имати само чланове јавне класе јер су чланови података интерфејса подразумевано јавни.
Наслеђивање вс апстракцијаАпстрактна класа се може проширити употребом кључне речи "ектендс" и потребно је обезбедити имплементацију свих декларисаних метода у матичној или апстрактној класиИнтерфејс се може имплементирати помоћу кључне речи „интерфејс“ и треба да обезбеди имплементацију за све методе декларисане у интерфејсу
Вишеструка применаАпстрактна класа може проширити другу Јава класу која имплементира више интерфејсаИнтерфејс може проширити само други интерфејс.
Када користитиАпстрактна класа се мора користити када неке класе требају подијелити неколико редака кода, а затим их можемо ставити у апстрактну класу и проширити их свим сродним класама.Интерфејс се може користити када морамо постићи више наслеђивања, потпуну апстракцију применом свих метода које је у интерфејсу декларирала класа која имплементира интерфејс.

Закључак - Јава интерфејс вс апстрактна класа

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

Препоручени чланак

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

  1. Колико су корисна питања и одговори за интервјуе са Ц #?
  2. 8 Корисно поређење-ХТМЛ5 вс Фласх
  3. Јава у односу на Ц # - 8 важне разлике
  4. Руби вс Ноде
  5. ХТМЛ5 вс ЈаваСцрипт поређење
  6. АрраиЛист вс Јава Вецтор

Категорија: