Abstrakta klase izskatās daudz kā saskarne, taču OOP iesācējiem šī koncepcija ir mazliet mulsinoša. Konceptuāli abstraktā klase izskatās gluži kā interfeiss, protams, bez jebkādas ieviešanas, tomēr viņiem ir taisnīga atšķirību daļa. Kaut arī abstraktā klase var būt daļēji vai pilnībā ieviesta, saskarne ir jāievieš pilnībā. Vissvarīgākā atšķirība starp abām ir tā, ka abstraktai klasei var būt noklusējuma ieviešana, savukārt saskarne ir tikai metožu definīcija, kurā ir tikai dalībnieku deklarācijas. Sīkāk apspriedīsim abu teorētiskos aspektus.
Abstraktā klase ir īpašs klases veids, kas darbojas kā citu klašu pamats un kuru nevar instantizēt. Abstraktās klases ieviešanas loģiku nodrošina tās atvasinātās klases. Lai klasi padarītu par abstraktu, tiek izmantots “abstrakts” modifikators, kas nozīmē, ka no tā atvasinātajā klasē ir jāievieš daži trūkstošie īstenojumi. Tajā ir gan abstrakti, gan ne abstrakti locekļi. Abstraktā klase ir paredzēta, lai nodrošinātu pamata funkcionalitāti, kuru var tālāk koplietot un ignorēt vairākas atvasinātas klases. Ir lietderīgi izvairīties no jebkāda veida koda dublēšanās. Tie ļoti līdzinās saskarnēm, bet ar papildu funkcionalitāti.
Interfeiss, no otras puses, nav klase, kurā ir tikai funkcionalitātes paraksts. Tas ir modelis bez ieviešanas. Konceptuāli runājot, tā ir tikai metožu definīcija, kas satur tikai dalībnieku deklarāciju. Tā ir tukša čaula, kurā nav ietverti tās dalībnieki. Tā ir kā abstrakta bāzes klase, kurā ir tikai abstrakti dalībnieki, piemēram, metodes, notikumi, indeksētāji, rekvizīti utt. To nevar tieši izveidot, un tās dalībniekus var ieviest jebkura klase. Turklāt klase var ieviest vairākas saskarnes, tomēr klase var mantot tikai vienu klasi.
Abstrakta klase | Saskarne |
Abstraktai klasei var būt visi piekļuves modifikatori dalībnieku funkciju, apakšsadaļu un rekvizītu deklarēšanai. | Interfeisam nav atļauts piekļuves modifikatorus dalībnieku funkciju, apakšsadaļu, rekvizītu uc deklarēšanai. Tiek pieņemts, ka visi dalībnieki ir netieši publiski. |
Klase var izmantot tikai vienu abstraktu klasi. | Klase var mantot jebkuru saskarņu skaitu. |
Vairāku mantojumu abstraktā klasē neatbalsta. | Interfeiss var atbalstīt vairāku mantojumu. |
Tehniski tā ir klase, kas var saturēt definīciju un tās ieviešanu, var arī nebūt. | Interfeisam var būt tikai funkcionalitātes paraksts, tāpēc tas būtībā ir tukšs apvalks. |
Abstraktā klasē var būt dalībnieki. metodes, definētās metodes un metodes. | Saskarne var saturēt tikai metodes un uzaicinājumus. |
Tas nosaka klases galveno identitāti un tiek izmantots, lai aprakstītu tā paša datu veida objektus. | To lieto, lai aprakstītu klases perifērās spējas. |
Abstraktas klases dalībnieki nevar būt statiski, ja vien tas nav pilntiesīgs dalībnieks. | Interfeisa dalībnieki nevar būt statiski. |
Tas ir ideāli piemērots tāda paša veida un kopīgas uzvedības īstenošanai. | Saskarnes ir labāk izmantot, ja vairākām ieviešanām ir kopīgi tikai metodes paraksti. |
Tam var būt konstruktora deklarācija. | Tam nevar būt konstruktora deklarācijas . |
Abstraktā klasē ir iepriekš noteikti lauki un konstruktori. | Saskarnēs laukus nevar definēt. |
Tam var būt gan abstraktas, gan abstraktas metodes. | Tam var būt tikai abstraktas metodes. |
Kāda ir atšķirība starp abstrakto klasi un saskarni? Tas, iespējams, ir viens no visbiežāk uzdotajiem jautājumiem jebkurā tehniskajā intervijā. Jebkurā C # apmācībā jūs, visticamāk, atradīsit daudz informācijas par abstraktajām klasēm un saskarnēm, tomēr izpratne par atšķirību starp abām ir diezgan grūta. Jūs varat apvienot visu informāciju, ko varat atrast, un joprojām nevarat iegūt pietiekami daudz. Nu, konceptuāli abi ir vissvarīgākie termini programmēšanā un ir diezgan vienādi, tomēr tie ļoti atšķiras funkcionalitātes ziņā. Lai gan abstraktā klase ir īpašs klases tips, kas darbojas kā pamats citām klasēm, interfeiss, no otras puses, ir tikai tukšs apvalks, kurā ir tikai dalībnieku deklarācijas.
Copyright © Visas Tiesības Aizsargātas | asayamind.com