Abstraktā klase un interfeiss galvenokārt tiek izmantoti abstrakcijai, tomēr tie ļoti atšķiras viens no otra. Abas ir Java galvenā sastāvdaļa, taču tām ir savs lietojums lietošanai. Lai gan abi termini var būt sinonīmi viens otram, tos nevar aizstāt.
Starp abiem ir būtiskas atšķirības. Kamēr saskarnes metode pēc noklusējuma ir abstrakta , abstrakts var saturēt gan abstraktas, gan ne abstraktas metodes. Nu, kopš Java 8, saskarnēs ir arī metožu ieviešana un viņiem Java var būt gan statiskas, gan noklusējuma metodes . Sīkāk izpētīsim atšķirību starp abiem.
Abstrakta klase Java ir klase, kas tiek pasludināta par abstraktu - tā var saturēt abstraktas metodes, var arī nebūt. Tas ir diezgan līdzīgs Java saskarnei, izņemot to, ka tajā var iekļaut noklusējuma metodes ieviešanu. Tāpat kā objektorientētā programmēšanā, arī Java abstrakcija tiek panākta, izmantojot abstraktas klases un saskarnes. Java 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 abstrakcijas metodes (metodes bez ķermeņa), bet, ja klasē ir vismaz viena abstrakcijas metode, tā jāpasludina par abstraktu. Tomēr ne abstraktas metodes var izmantot arī abstraktā klasē, bet tikai noklusējuma uzvedības ieviešanai. Abstraktās klases metodēm var būt piekļuves modifikatori, piemēram, privāti, publiski, statiski un aizsargāti, atkarībā no redzamības līmeņa. Abstraktu klasi nevar noteikt, un tā nenodrošina simtprocentīgu abstrakciju, jo tai var būt konkrēta metode.
Interfeiss, lai arī 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 pamatu. Interfeiss drīzāk ir klases projekts, ko izmanto arī abstrakcijas sasniegšanai Java. Tas satur abstraktas metodes un statiskās konstantes. Vienkārši sakot, interfeiss ir abstraktu metožu kopums, kas tiek izmantots, lai norādītu uzvedību, kas klasei jāievieš. Atšķirībā no abstraktās klases interfeiss nodrošina pilnīgu Java abstrakciju. Tam var būt gan metodes, gan mainīgie tāpat kā klase, tomēr saskarnē deklarētās metodes pēc noklusējuma ir abstraktas.
Abstrakta klase | Saskarne |
Abstraktais atslēgvārds tiek izmantots abstraktas klases izveidošanai, un to var izmantot ar metodēm. | Interfeisa atslēgvārds tiek izmantots, lai izveidotu interfeisu, taču to nevar izmantot ar metodēm. |
Klase var pagarināt tikai vienu abstraktu klasi. | Klase var ieviest vairāk nekā vienu saskarni. |
Abstraktā klasē var būt gan abstraktas, gan ne abstraktas metodes. | Interfeisam var būt tikai abstraktas metodes. |
Mainīgie pēc noklusējuma nav galīgi. Tas var saturēt galīgos mainīgos. | Mainītāji pēc noklusējuma saskarnē ir galīgi. |
Abstrakta klase var nodrošināt saskarnes 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 nevar būt metožu ieviešana. |
Tam var būt publiski, privāti, statiski un aizsargāti piekļuves modifikatori. | Java saskarnē metodes ir netieši publiskas un abstraktas. |
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. |
Abstrakcijai tiek izmantota gan abstraktā klase, gan saskarne; tomēr viņiem ir taisnīga atšķirību daļa. Galveno atšķirību starp abām nosaka abstrakcijas metodes. Pirmajam var būt vai nebūt abstraktas metodes, bet otrajam ir netieši abstrakts. Abstraktā klasē var būt gan abstraktas, gan ne abstraktas metodes. Interfeisam, no otras puses, var būt tikai abstraktas metodes, tādējādi tām nevar būt ieviešanas, kas vienkārši nozīmē, ka saskarnē nevar būt abstraktas metodes. Nevar izveidot tādu abstraktu klasi, kas aizliedz objekta izveidi. Savukārt saskarne var izskatīties kā klase, bet tā nav.
Copyright © Visas Tiesības Aizsargātas | asayamind.com