Abstraktā klase pret mantojumu
Abstract class un Heritance ir divi svarīgi objektorientēti jēdzieni, kas atrodami daudzās objektorientētās programmēšanas valodās, piemēram, Java. Abstrakto klasi var uzskatīt par parastās (konkrētās) klases abstraktu versiju, savukārt Mantojums ļauj jaunām klasēm paplašināt citas klases. Abstraktā klase ir klase, kuru nevar inicializēt, bet var paplašināt. Tātad abstraktajām klasēm ir nozīme tikai tad, ja programmēšanas valoda atbalsta pārmantošanu. Java valodā abstraktās klases tiek deklarētas, izmantojot atslēgvārdu Abstract, savukārt atslēgvārds Extends tiek izmantots mantošanai no (super) klases.
Kas ir abstraktā klase?
Parasti abstraktās klases, kas pazīstamas arī kā Abstract Base Classes (ABC), nevar izveidot (šīs klases gadījumu nevar izveidot). Tātad abstraktajām klasēm ir nozīme tikai tad, ja programmēšanas valoda atbalsta pārmantošanu (spēju izveidot apakšklases, paplašinot klasi). Abstraktās klases parasti attēlo abstraktu jēdzienu vai entītiju ar daļēju ieviešanu vai bez tās. Tāpēc abstraktās klases darbojas kā vecākklases, no kurām tiek atvasinātas pakārtotās klases, tādējādi pakārtotajām klasēm būs kopīgas vecākas klases nepilnīgās funkcijas, un to pabeigšanai var pievienot funkcionalitāti.
Abstract klasēs var būt ietvertas abstraktās metodes. Apakšklases, kas paplašina abstrakto klasi, var īstenot šīs (mantotās) abstraktās metodes. Ja bērnu klase īsteno visas šādas abstraktās metodes, tā ir konkrēta klase. Bet, ja tā nenotiek, arī bērnu klase kļūst par abstrakto klasi. Tas viss nozīmē to, ka, programmētāja izvirzot klasi kā abstraktu, viņa saka, ka klase būs nepilnīga un tajā būs elementi, kas jāpabeidz mantotajām apakšklasēm. Tas ir jauks veids, kā izveidot līgumu starp diviem programmētājiem, kas vienkāršo programmatūras izstrādes uzdevumus. Programmētājam, kas raksta kodu, lai mantotu, ir precīzi jāievēro metodes definīcijas (bet, protams, var būt arī sava ieviešana).
Kas ir mantošana?
Mantojums ir uz objektu orientēta koncepcija, kas ļauj jaunām klasēm paplašināt citas klases. Atslēgvārds Extends tiek izmantots, lai ieviestu mantojuma jēdzienu Java programmēšanas valodā. Mantojums būtībā nodrošina koda atkārtotu izmantošanu, ļaujot paplašināt esošās klases īpašības un uzvedību ar jaunu definētu klasi. Kad jauna apakšklase (vai atvasināta klase) paplašina virsklasi (vai vecāku klasi), šī apakšklase pārmantos visus superklases atribūtus un metodes. Apakšklase var pēc izvēles ignorēt uzvedību (nodrošināt jaunu vai paplašinātu funkcionalitāti metodēm), kas mantotas no vecākklases. Parasti apakšklase nevar paplašināt vairākas superklases (piemēram, Java). Tāpēc vairākkārtējai mantošanai nevar izmantot paplašinājumus. Lai iegūtu vairāku mantojumu, jums ir jāizmanto saskarnes.
Kāda ir atšķirība starp abstrakto klasi un mantojumu?
Abstraktās klases parasti attēlo abstraktu jēdzienu vai vienību ar daļēju ieviešanu vai bez tās. Mantojums ļauj jaunām klasēm paplašināt citas klases. Tā kā abstraktās klases nevar izveidot, lai izmantotu abstraktās klases, jums ir jāizmanto mantojuma jēdziens. Pretējā gadījumā abstraktā klase nav noderīga. Abstraktās klases var saturēt abstraktas metodes, un, paplašinot klasi, visas metodes (abstraktās un konkrētās) tiek mantotas. Mantotā klase var ieviest jebkuru vai visas metodes. Ja visas abstraktās metodes nav ieviestas, arī šī klase kļūst par abstrakto klasi. Klase nevar mantot no vairākām abstraktajām klasēm (šī nav abstrakto klašu kvalitāte pati par sevi, bet gan mantojuma ierobežojums).
Saistītās ziņas:
Atšķirība starp abstrakto un betona klasi
Atšķirība starp virtuālo un abstrakto
Atšķirība starp abstrakto klasi un interfeisu
Atšķirība starp ieviešanu un pagarināšanu
Atšķirība starp grafiku un koku
Filed Under: Programmēšana Tagged with: ABC, abstrakts, abstraktas bāzes klases, abstraktas klases, abstraktas klases, abstrakts atslēgvārds, abstraktās metodes, konkrēta klase, atslēgvārda paplašinājums, mantojums, mantojuma klase, mantotā klase, Java, vairākkārtēja mantošana, objektorientēti jēdzieni, parastā klase, superklase
Par autoru: Indika
Indika, BSc. Eng, MSECE Computer Engineering, PhD. Datorzinātnes, ir docents, un viņam ir pētniecības intereses bioinformātikas, skaitļošanas bioloģijas un biomedicīnas dabiskās valodas apstrādes jomās.
Komentāri
-
Džeisons saka
2017. gada 30. augusts, plkst. 13:25
Paldies, ka izskaidrojāt atšķirību. Ar to visi mani jautājumi ir atrisināti.
Atbildēt
-
Aus saka
2019. gada 10. maijs, 15:04
labākā atbilde tīmeklī, Skolotājs nepaskaidro sūdus un nav jēgas, mono tonis mf. Šādi jūs izskaidrojat jēdzienus.
Atbildēt
Atstāt atbildi Atcelt atbildi
Jūsu e-pasta adrese netiks publicēta. Obligātie lauki ir atzīmēti ar
Komentārs
Vārds
E-pasts
Tīmekļa vietne