Atšķirības starp abstraktu klasi un interfeisu Java

Abstract klase vs interfeiss Java

Lai saprastu atšķirības starp abstrakto klasi un Java saskarni, pirmkārt, ir svarīgi saprast katru no tiem neatkarīgi. Java abstraktā klase tiek izmantota, lai deklarētu apakšklases ar kopīgu īpašību kopu. Abstraktās klases vispārpieņemtā izmantošana ir citu klašu superklase, kas faktiski ļauj tai paplašināt abstrakto klasi. Abstraktās klases deklarācijā tiek izmantots abstrakts atslēgvārds. Tāpat kā jebkurai citai klasei, abstraktajai klasei ir lauki, kas apraksta metodes un raksturlielumus, kurus klase var izpildīt. Vienīgi deklarējot abstraktu klasi, klasi nevar uzsākt

Java interfeisu var pielīdzināt protokolam. Tas atspoguļo iepriekš iestatītu un saskaņotu uzvedību, kas ļauj atvieglot nesaistītu objektu mijiedarbību. Atkarībā no lietotāja interfeiss satur dažādu īstenoto darbību atslēgu. Tāpēc saskarne kalpo kā saikne starp ražotāju un patērētāju. Tādējādi saskarnes Java ir metožu grupa, kurā ir tukšas daļas, kurām var būt pastāvīgas deklarācijas. Pakļaujot klasei Java saskarni, tas nozīmē, ka no klases sagaidāmā rīcība ir visu interfeisa metožu ieviešana.


Atšķirības

Pirmkārt, abstrakta klase ļauj laukiem, kas nav statiski vai galīgi, pretstatā statiskajiem un galīgajiem laukiem, ko izmanto saskarnēs. Interfeisos nevar izmantot nevienu ieviešanas kodu, un, iespējams, abstraktajā klasē tiek izmantots ieviešanas kods. Abstraktajā klasē ieviestajiem ieviešanas kodiem var būt dažas vai visas ieviestās metodes. Pēc noklusējuma visas saskarnes metodes ir “abstraktas”.

Redzamība ir iespējama arī metodēm vai abstraktās klases dalībniekiem, kas var atšķirties, piemēram, publiski, aizsargāti, privāti vai vispār. Turpretī saskarnes redzamību var iestatīt tikai vienā redzamības režīmā, kas ir “publisks”.

Abstrakta klase automātiski mantos objekta klasi. Faktiski tas nozīmē, ka ir iekļautas tādas metodes kā klons () un ekvivalents (). Saskarnē objekta klases mantošana nav iespējama. Pēc tam abstraktajai klasei ir tāda spēja, ka tai ir konstruktors, bet saskarnei tāda nevar būt.

Java saskarnei ir arī ļoti svarīga funkcija ar vairāku mantojumu ieviešanu, jo klasei var būt tikai viena superklase. Lai arī var būt tikai viena superklase, to var ieviest neatkarīgi no saskarņu skaita. Abstraktā klasē nav iespējams iegūt vairākus mantojumus.

Izpildījumā saskarnes parasti tiek lēnāk ieviestas pretstatā abstraktajai klasei galvenokārt papildu virziena dēļ, lai atrastu atbilstošo metodi klasē. Atšķirība tomēr ir kļuvusi lēnāka, pateicoties mūsdienu Java virtuālajām mašīnām, kuras tiek nepārtraukti pilnveidotas.

Lai pievienotu metodi saskarnē, ir jāizseko visām ieviešanas klasēm, kuras ievieš konkrēto saskarni. Varat arī paplašināt saskarni, lai tai būtu papildu metodes. Ja jums ir darīšana ar abstraktu klasi, viss, kas nepieciešams, ir pievienot metodes noklusējuma ieviešanu, un kods turpina darboties. Ciktāl pastāv atšķirības starp abstraktajām klasēm un saskarnēm, ir svarīgi atzīmēt, ka tie nav konkurenti, bet šeit pieminētās atšķirības kalpo kā papildinājums viena otrai.  

Kopsavilkums

  1. Klases kopsavilkuma lauki nav statiski vai galīgi pretstatā saskarnei, kurai ir statiskas un beigu tabulas.

  2. Nevienu ieviešanas kodu nevar izmantot saskarnēs, kamēr to var izmantot abstraktā klasē.

  3. Saskarnes redzamība var būt tikai publiska, savukārt abstraktā klases redzamība var atšķirties.

  4. Abstrakta klase automātiski mantos objekta klasi, bet saskarnē tas nav iespējams.

  5. Abstraktā klase ir ātrāka nekā saskarne ieviešanā.