Која је разлика између класе сажетка и интерфејса у Јави?



Овај чланак ће вам помоћи да разумете кључну разлику између апстрактне класе и интерфејса у јави уз помоћ примера програма.

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

Теме о којима се говори у овом чланку су следеће:





Да би се разумеле разлике између апстрактне класе и интерфејса у , морате знати шта је апстрактна класа и шта је интерфејс. Дакле, почнимо са расправом шта су то.

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

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



Белешка: Ан апстрактна метода , је метода која није примењена на месту и додајенепотпуност до класа .

пакет МиПацкаге // апстрактна класа апстрактна класа Анимал {Стринг АнималНаме = '' Анимал (име низа) {тхис.АнималНаме = наме} // декларише апстрактне методе // има подразумевану имплементацију публиц воид БасицИнфо (детаљи низа) {Систем. оут.принтлн (тхис.АнималНаме + '' + детаљи)} // апстрактне методе које ће се // применити у њиховим подразредима (абстрактима) јавно празно станиште () апстрактно јавно празно дисање ()} класа Террестриал ектендс Анимал {// конструктор Земаљски (назив низа) {супер (име)} @Преузми јавно празно станиште () {Систем.оут.принтлн ('остави на копну и')} @ Преведи јавно празно дисање () {Систем.оут.принтлн ('респире кроз плућа или душник. ')}} класа Акуатиц проширује Анимал {// конструктор Акуатиц (име низа) {супер (име)} @ Надјачај јавно празно станиште () {Систем.оут.принтлн (' Оставља у води и ') } @Оверриде јавно воид дисање () {Систем.оут.принтлн ('дисање кроз шкрге или њихову кожу.')}} Цласс АбстрацтЦлассДемо {публиц статиц вои д маин (Стринг [] аргс) {// стварање објекта земаљске класе // и коришћење референце класе Анимал. Анимал објецт1 = нев Террестриал ('Хуманс') објецт1.БасицИнфо ('су копнена бића, они') објецт1.хабитат () објецт1.респиратион () Систем.оут.принтлн ('') // креирање објеката класе круга Анимал објецт2 = нев Акуатиц ('Фисхес') објецт2.БасицИнфо ('су водена бића, она') објецт2.хабитат () објецт2.респиратион ()}}

Оутпут

Људи су копнена бића, напуштају копно и дишу кроз плућа или душник. Рибе су водена бића, она их оставља у води и одмара кроз шкрге или њихову кожу.

Тхе Основни подаци () је метода коју деле Земаљски и Водени класе. Од Класа животиња не може се покренути, ми стварамо објекте од Земаљски и Водени часови у сврху програмирања. Следеће имамо интерфејсе.



Интерфејс у ​​Јави

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

пакет МиПацкаге интерфејс Животиње {// апстрактне методе воид хабитат () воид респиратион ()} класа ТеррестриалА имплементира Анималс {Стринг АнималНаме = '' // конструктор ТеррестриалА (Стринг наме) {тхис.АнималНаме = наме} @Оверриде публиц воид хабитат () {Систем.оут.принтлн (тхис.АнималНаме + 'оставите на копну и')} @ Надјачајте јавно дисање празнине () {Систем.оут.принтлн ('дисање кроз плућа или душник.')}} Класа АкуатицА примењује животиње {Стринг АнималНаме = '' // конструктор АкуатицА (име низа) {тхис.АнималНаме = наме} @Преузми јавно празно станиште () {Систем.оут.принтлн (тхис.АнималНаме + 'остави у води и')} @ Преведи јавно празно дисање () {Систем.оут.принтлн ('респире кроз шкрге или њихову кожу.')}} Класа ЈаваИнтерфацеДемо {публиц статиц воид маин (Стринг [] аргс) {// стварање објекта земаљске класе // и коришћење референце класе Анимал . Анималс објецт1 = нев ТеррестриалА ('Хуманс') објецт1.хабитат () објецт1.респиратион () Систем.оут.принтлн ('') // стварање објеката класе круга Анималс објецт2 = нев АкуатицА ('Фисхес') објецт2.хабитат () објецт2.респиратион ()}}

Оутпут

Људи одлазе на копно и дишу кроз плућа или душник. Рибе остављају у води и одмашу се кроз шкрге или кожу.

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

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

Апстрактна класа вс интерфејс

У доњој табели наведене су кључне разлике између апстрактне класе и интерфејса.

Параметар Апстрактни час Приступ

Примена подразумеване методе

Може имати подразумевану примену методе

шта је појо у јави

Интерфејси пружају чисту апстракцију и уопште не могу да имају примену

Променљиве

Може садржати не-коначне променљиве.

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

Коришћена кључна реч

Апстрактна класа се може проширити помоћу кључне речи „ектендс

Интерфејс треба имплементирати помоћу примера кључних речи

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

Моћиимају јавни, заштићени, приватни и подразумевани модификатор

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

Брзина примене

Бржи је од интерфејса

Интерфејс је нешто спорији и захтева додатну индиректност

Нормал Цласс

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

Може да имплементира више интерфејса

Конструктори

Апстрактна класа може имати конструкторе

Интерфејс не може имати конструкторе

Вишеструко наслеђивање

Апстрактна класа може проширити другу класу и може применити више Јава интерфејса

Интерфејс може проширити само други Јава интерфејс

Ето, сад сте кључне разлике између апстрактне класе и интерфејса у Јави. Али, како одлучујете када ћете користити коју од ове две?

Када користити апстрактну класу и када користити интерфејс?

Размислите о употреби апстрактних класа у следећим случајевима:

  • Ако имате неке сродне класе које треба да делите исти редови кода
  • Када желите да дефинишете нестатична или не-коначна поља
  • Кад их имаметоде или пољаили захтевају модификатори приступа осим јавног (као што су заштићене и приватне)

Размислите о употреби интерфејса у следећим случајевима:

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

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

Обавезно вежбајте што је више могуће и вратите своје искуство.

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

подразумевана вредност цхар у јави

Имате питање за нас? Молимо вас да га наведете у одељку за коментаре овог „интерфејса јава мапе“ чланак и јавићемо вам се у најкраћем могућем року.