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

Abstraktās klases un saskarnes galvenokārt tiek izmantotas abstrakcijai, tomēr tās ir ļoti atšķirīgas viena no otras. Abas ir Java galvenā sastāvdaļa, taču tām ir savas lietojumprogrammas. Lai arī abi termini var būt sinonīmi viens otram, tos nevar izmantot savstarpēji aizstājot.

Starp abiem pastāv būtiskas atšķirības. Kaut arī saskarnes metode pēc noklusējuma ir abstrakta, abstrakts var saturēt gan abstraktas, gan abstraktas metodes. Kopš Java 8, saskarnēm ir arī metožu ieviešana, un Java tām var būt gan statiskas, gan noklusējuma metodes. Detalizēti izpētīsim atšķirību starp abiem.

Kas ir abstrakta klase Java?

Abstrakta klase Java ir klase, kas tiek pasludināta par abstraktu - tajā var būt vai nebūt abstraktas metodes. Tas ir diezgan līdzīgs Java interfeisam, izņemot to, ka tajā var būt noklusējuma metodes ieviešana. Līdzīgi kā objektorientētā programmēšanā, Java abstrakcija tiek panākta, izmantojot abstraktas klases un saskarnes. Java valodā abstrakcija nozīmē nesvarīgu detaļu slēpšanu no lietotāja, lai koncentrētos tikai uz būtiskām detaļām, lai palielinātu efektivitāti, tādējādi samazinot sarežģītību. Atslēgvārds “abstrakts” tiek izmantots, lai izveidotu abstraktu klasi tieši pirms klases atslēgvārda klases deklarācijā.

Abstraktā klase var saturēt vai nevar saturēt abstrakcijas metodes (metodes bez ķermeņa), bet, ja klasei ir vismaz viena abstrakcijas metode, tā ir jāpasludina par abstraktu. Tomēr neabstraktās metodes var izmantot arī tikai abstraktajā klasē, bet tikai, lai ieviestu noklusējuma izturēšanos. Abstraktās klases metodēm var būt piekļuves pārveidotāji, piemēram, privāti, publiski, statiski un aizsargāti, atkarībā no redzamības līmeņa. Abstraktu klasi nevar paātrināt, un tā nenodrošina simtprocentīgu abstrakciju, jo tai var būt konkrēta metode.

Kas ir interfeiss?

Lai arī interfeiss izskatās kā klase, tā nav. Tā kā Java neatbalsta vairākus mantojumus, interfeiss dažreiz ir ideāls, lai nodrošinātu klases hierarhijas bāzi. Interfeiss ir vairāk par klases projektu, kuru arī izmanto, lai Java iegūtu abstrakciju. Tas satur abstraktas metodes un statiskas konstantes. Vienkārši izsakoties, saskarne ir abstraktu metožu kopums, ko izmanto, lai norādītu uzvedību, kas klasei jāīsteno. Atšķirībā no abstraktās klases, interfeiss Java nodrošina pilnīgu abstrakciju. Tam var būt gan metodes, gan mainīgie tāpat kā klasei, tomēr interfeisā deklarētās metodes pēc noklusējuma ir abstraktas.

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

  1. Java abstraktās klases un saskarnes “daudzkārtēja mantošana” - Neskatoties uz to, ka abstrakcijai galvenokārt tiek izmantota abstrakta klase un interfeiss, tie diezgan atšķiras viens no otra. Kamēr abstrakta klase ir klase, interfeiss ir interfeiss. Tas nozīmē, ka kamēr saskarne var paplašināt tikai citu Java saskarni, abstrakta klase Java var ieviest vairākus mantojumus. Nu, Java neatbalsta vairākus mantojumus, bet Java var ieviest vairākus mantojumus.
  2. “Metodes tips” abstraktajā klasē un interfeisā Java - Otrā galvenā atšķirība starp abām ir tā, ka, lai arī interfeisam var būt tikai abstraktas metodes, abstraktajai klasei var būt gan abstraktas, gan neabstraktainas metodes. Kopš Java 8, interfeisam var būt arī noklusējuma un statiskās metodes.
  3. Java piekļuves abstraktās klases un interfeisa “piekļuves modifikatori” - Abstraktajai klasei var būt publiski, privāti un aizsargāti piekļuves pārveidotāji, tomēr interfeisa metodes ir netieši publiskas un abstraktas. Ar interfeisa metodēm nevar izmantot nevienu citu piekļuves pārveidotāju ”.
  4. Abstraktās klases un interfeisa “ieviešana” Java - Abstrakta klase var nodrošināt interfeisa ieviešanu. No otras puses, saskarne nevar nodrošināt abstraktas klases ieviešanu.
  5. Java valodas abstraktās klases un interfeisa “atslēgas vārds”- Kaut arī “abstrakts” atslēgvārds tiek izmantots, lai pasludinātu abstraktu klases metodi par abstraktu, tomēr saskarnes ir pilnīgi atšķirīgs stāsts; viņiem var būt tikai publiskas, statiskas galīgās konstantes un metožu deklarācijas.
  6. Abstraktās klases un interfeisa “lietošana” Java - Kaut arī interfeiss ir ideāli piemērots tipa deklarēšanai, abstrakta klase ir vislabāk piemērota koda atkārtotai izmantošanai un evolūcijas perspektīvai. Saskarne izskatās kā klase, bet tā nav klase.
  7. Abstraktās klases un interfeisa “uzticamība” Java- Vēl viena būtiska atšķirība starp abstraktu klasi un interfeisu ir tā, ka pirmā ir mazliet ātrāka nekā otrā, jo parasti interfeiss tiek iesaistīts meklēšanā, pirms Java tiek izsaukta jebkura pārsniegta metode..
  8. Java abstraktās klases un interfeisa “galīgie mainīgie” - Saskarnē deklarētie mainīgie pēc noklusējuma ir galīgi, savukārt abstraktā klase var saturēt vai nebūt saturēt galīgos mainīgos.

Kopsavilkuma klase vs interfeiss Java: salīdzināšanas tabula

Abstraktā klase Saskarne
Abstraktu atslēgu izmanto, lai izveidotu abstraktu klasi, un to var izmantot ar metodēm. Interfeisa atslēgvārds tiek izmantots interfeisa izveidošanai, bet to nevar izmantot ar metodēm.
Klase var paplašināt tikai vienu abstraktu klasi. Klase var ieviest vairāk nekā vienu saskarni.
Abstraktajai klasei var būt gan abstraktas, gan neabstraktas metodes. Saskarnei var būt tikai abstraktas metodes.
Pēc noklusējuma mainīgie nav galīgi. Tas var saturēt galīgos mainīgos. Pēc noklusējuma interfeisā mainīgie ir galīgi.
Abstrakta klase var nodrošināt interfeisa ieviešanu. Saskarne nevar nodrošināt abstraktas klases ieviešanu.
Tam var būt metodes ar ieviešanu. Tas nodrošina absolūtu abstrakciju, un tam nevar būt metožu ieviešanas.
Tam var būt publiski, privāti, statiski un aizsargāti piekļuves pārveidotāji. Metodes ir netieši publiskas un abstraktas Java saskarnē.
Tas neatbalsta vairākus mantojumus. Tas atbalsta vairākus mantojumus.
Tas ir ideāli piemērots koda atkārtotai izmantošanai un evolūcijas perspektīvai. Tas ir ideāli piemērots tipa deklarēšanai.

Kopsavilkuma punkti par abstraktu klasi un interfeisu Java

Abstrakcijai tiek izmantota abstrakta klase un interfeiss; tomēr viņiem ir diezgan liela atšķirību daļa. Galveno atšķirību starp abām rada abstrakcijas metodes. Lai gan pirmajam var būt vai nevar būt abstraktas metodes, pēdējam ir netieši abstrakts raksturs. Abstraktajai klasei var būt gan abstraktas, gan neabstraktas metodes. No otras puses, saskarnei var būt tikai abstraktas metodes, tāpēc tām nevar būt ieviešanas, kas vienkārši nozīmē, ka saskarnei nevar būt abstraktas metodes. Nevar realizēt abstraktu klasi, kas aizliedz izveidot objektu. No otras puses, saskarne var izskatīties kā klase, bet tā nav.