Pārspiešana vs pārslodze
Metode Ignorēšana un Metodes pārslodze ir divi jēdzieni / paņēmieni / līdzeklis, kas atrodami dažās programmēšanas valodās. Abas koncepcijas ļauj programmētājam nodrošināt dažādas metodes ar tādu pašu nosaukumu. Metodes ignorēšana ļauj programmētājam nodrošināt alternatīvu ieviešanu apakšklasē metodei, kas jau ir definēta tās superklasē. Metodes pārslodze ļauj programmētājam nodrošināt dažādas implementācijas vairākām metodēm ar vienu un to pašu nosaukumu (tajā pašā klasē).
Kas ir svarīgākais?
Kā minēts iepriekš, klase var paplašināt superklases vai vecāku klasi objektorientētās programmēšanas valodās. Bērnu klasei var būt savas metodes vai arī pēc izvēles tai var būt savas metodes, kas jau noteiktas vecāku klasē (vai kādā no vecvecāku klasēm). Tātad, kad pēdējais notiek, to sauc par metodi, kas ir prioritāra. Citiem vārdiem sakot, ja bērnu klase nodrošina metodes ieviešanu ar tādu pašu parakstu un atgriešanas veidu kā metode, kas jau noteikta vienā no vecāku klasēm, tiek uzskatīts, ka šī metode tiek aizstāta (aizstāta) ar bērnu klases ieviešanu. . Tātad, ja klasē ir pārsniegta metode, izpildlaika sistēmai būs jāizlemj, kura metodes ieviešana tiek izmantota. Šī problēma tiek atrisināta, apskatot precīzu objekta veidu, kas tiek izmantots tā izsaukšanai. Ja, lai izsauktu ignorēto metodi, tiek izmantots vecāku klases objekts, tad tiek izmantota ieviešana vecāku klasē. Līdzīgi, ja tiek izmantots bērnu klases objekts, tad tiek izmantota bērna klases ieviešana. Mūsdienu programmēšanas valodas, piemēram, Java, Eifell, C ++ un Python, ļauj izmantot metodi.
Kas ir pārslodze?
Metodes pārslodze ir funkcija, ko nodrošina dažas programmēšanas valodas, lai izveidotu vairāk nekā vienu metodi ar tādu pašu nosaukumu, bet ar dažādiem ievades un izvades veidiem. Mūsdienu programmēšanas valodās, piemēram, Java, C #, C ++ un VB.NET, šī funkcija ir pieejama. Metodi var pārslogot, izveidojot citu metodi ar tādu pašu nosaukumu, bet ar atšķirīgu metodes parakstu vai atšķirīgu atgriešanas veidu (vai abiem). Piemēram, ja jums vienā metodē ir metode 1 (tips 1 t1) un metode 1 (tips 2 t2), tad tās ir pārslogotas. Tad sistēmai būs jāizlemj, kura jāizpilda, kad tā tiek izsaukta. Šī diferenciācija tiek veikta, aplūkojot metodes parametru (-u) veidu. Ja arguments ir 1. tipa, tad tiek izsaukta pirmā ieviešana, savukārt, ja tā ir 2. tips, tad tiek izsaukta otrā ieviešana..
Kāda ir atšķirība starp pārspiešanu un pārslodzi?
Lai arī metodes nodrošināšanai ar atšķirīgu ieviešanu tiek izmantota metodes aizstāšana un metodes pārslodze, starp šīm divām koncepcijām / metodēm pastāv būtiskas atšķirības. Pirmkārt, metodoloģiskie priekšmeti vienmēr atrodas dažādās klasēs, savukārt pārslodzes metodes subjekti atrodas vienā klasē. Tas nozīmē, ka ignorēšana ir iespējama tikai objektorientētās programmēšanas valodās, kas ļauj mantot, savukārt pārslodze var būt pieejama arī objektiem neorientētā valodā. Citiem vārdiem sakot, jūs ignorējat metodi superklasē, bet jūs pārslogojat metodi savā klasē.
Vēl viena atšķirība ir tā, ka ignorētajām metodēm ir vienāds metodes nosaukums, metodes paraksts un atgriešanas tips, bet pārslogotajām metodēm ir jābūt atšķirīgām gan paraksta, gan atgriešanās veida ziņā (nosaukumam jābūt vienam un tam pašam). Lai atšķirtu divas ignorētās metodes, tiek izmantots precīzs objekta tips, kas tiek izmantots, lai izsauktu izmantotās metodes, savukārt, lai atšķirtu divas pārslogotas metodes, tiek izmantoti parametru veidi. Vēl viena galvenā atšķirība ir tā, ka pārslodze tiek atrisināta kompilēšanas laikā, savukārt pārsniegšana tiek atrisināta izpildlaika laikā.