Skirtumai tarp „Java“ abstrakčios klasės ir sąsajos

Anotacija klasė ir sąsaja Java

Norint suprasti skirtumus tarp abstrakčios klasės ir „Java“ sąsajos, visų pirma svarbu suprasti kiekvieną iš jų atskirai. „Java“ abstrakčioji klasė naudojama deklaruoti poklasius su bendrų charakteristikų rinkiniu. Bendras abstrakčios klasės vartojimas yra superklasė kitų klasių, kuri iš tikrųjų leidžia pratęsti abstrakčios klasės klasę. Abstrakčios klasės deklaracijoje naudojamas abstraktus raktinis žodis. Kaip ir bet kuri kita klasė, abstrakčioji klasė turi laukus, apibūdinančius metodus ir savybes, kuriuos klasė gali atlikti. Vien deklaravus abstrakčią klasę, klasė negali būti inicijuota

„Java“ sąsaja gali būti prilyginta protokolui. Tai reiškia iš anksto nustatytą ir sutartą elgesį, leidžiantį palengvinti nesusijusių objektų sąveiką. Priklausomai nuo vartotojo, sąsaja turi raktą įvairiems įgyvendinamiems veiksmams. Taigi sąsaja yra ryšys tarp gamintojo ir vartotojo. Taigi „Java“ sąsajos yra metodų grupė, kurioje yra tušti kūnai, kurie gali turėti nuolatines deklaracijas. Aiškindami klasę į „Java“ sąsają, tai reiškia, kad elgesys, kurio tikimasi iš klasės, yra visų sąsajos metodų įgyvendinimas.


Skirtumai

Pirmiausia, abstrakčioji klasė leidžia laukus, kurie nėra statiniai ar galutiniai, priešingai nei statinius ir galutinius laukus, naudojamus sąsajose. Sąsajose negali būti jokio diegimo kodo, todėl gali būti diegimo kodas, naudojamas abstrakčioje klasėje. Įdiegimo kodai, išdėstyti abstrakčioje klasėje, gali turėti kelis arba visus įdiegtus metodus. Pagal numatytuosius nustatymus visi sąsajos metodai yra „abstraktūs“.

Matomumas taip pat galimas abstrakčios klasės metodams ar nariams, kurie gali skirtis, pavyzdžiui, vieši, saugomi, privatūs ar jų nėra. Kita vertus, sąsajos matomumą galima nustatyti tik į vieną viešumo matomumo režimą.

Abstrakčioji klasė automatiškai paveldės objekto klasę. Iš tikrųjų tai reiškia, kad įtraukiami tokie metodai kaip klonas () ir lygus (). Sąsajoje negalima paveldėti objekto klasės. Po to abstrakčioji klasė gali turėti konstruktorių, tačiau sąsaja jo negali turėti.

„Java“ sąsaja taip pat atlieka labai svarbią funkciją įgyvendinant kelis palikimus, nes klasė gali turėti tik vieną superklasę. Nors gali būti tik viena superklase, ji gali būti įdiegta į daugybę sąsajų. Abstraktinėje klasėje neįmanoma turėti kelių paveldėjimų.

Veikiant, sąsajos paprastai būna lėtesnės, palyginti su abstrakčia klase, daugiausia dėl papildomų krypčių ieškant atitinkamo metodo klasėje. Tačiau skirtumas tapo lėtesnis dėl modernių „Java“ virtualių mašinų, kurios nuolat tobulinamos.

Pridėjus metodą sąsajoje reikia atsekti visas diegimo klases, kurios įgyvendina konkrečią sąsają. Arba galite išplėsti sąsają, kad ji turėtų papildomų metodų. Jei susiduriate su abstrakčia klase, viskas, ko jums reikia, yra pridėti numatytąjį metodo įgyvendinimą, o kodas ir toliau veikia. Kadangi yra skirtumų tarp abstrakčių klasių ir sąsajų, svarbu pažymėti, kad jie nėra konkurentai, tačiau čia paminėti skirtumai papildo vienas kitą..  

Santrauka

  1. Abstraktūs klasės laukai nėra statiniai ar galutiniai, priešingai nei sąsaja, kurioje yra statinės ir galutinės lentelės.

  2. Joks diegimo kodas negali būti naudojamas sąsajose, o jis gali būti naudojamas abstrakčioje klasėje.

  3. Sąsajos matomumas gali būti tik viešas, o abstraktus klasės matomumas gali skirtis.

  4. Abstrakčioji klasė automatiškai paveldės objekto klasę, bet tai neįmanoma sąsajoje.

  5. Anotacija klasė yra greičiau nei sąsaja įgyvendinant.