Atšķirība starp vienkāršu un daudzkārtēju mantojumu

Pēdējais atjauninājums: 2023. gada 06. oktobrī

Mantojums ir viens no galvenajiem programmēšanas jēdzieniem objektorientēts. Ļauj klasei mantot citas klases rekvizītus un metodes.

Vienkāršs mantojums

Vienkārša mantošana ir tad, kad klase manto tikai rekvizītus un metodes no vecākklases. Iedomājieties, ka jums ir vecāku klase ar nosaukumu “Dzīvnieks” un bērnu klase ar nosaukumu “Suns”. Klase "Suns" pārmantotu klases "Dzīvnieks" metodes un īpašības, piemēram, "ēst", "gulēt", "elpot", cita starpā.

Daudzkārtējs mantojums

Vairākkārtēja mantošana ir tad, kad klase pārmanto rekvizītus un metodes no vairāk nekā vienas vecākklases. Citiem vārdiem sakot, bērnu klasē var būt vairākas vecāku klases. Šāda veida mantošana ir iespējama dažās programmēšanas valodās, piemēram, C++, bet ne citās, piemēram, Java.

Kāpēc visās programmēšanas valodās nav atļauta vairākkārtēja mantošana?

Vairāku mantojumu dēļ var rasties neskaidrības. Citiem vārdiem sakot, ja divām vecākklasēm ir metodes vai rekvizīti ar tādu pašu nosaukumu, var nebūt skaidrs, kuru no šīm metodēm vai rekvizītiem izmantot pakārtotajai klasei. Šī iemesla dēļ dažas programmēšanas valodas nepieļauj daudzkārtēju pārmantošanu.

Ekskluzīvs saturs — noklikšķiniet šeit  Kā es varu programmēt ātrāk? Praktiski padomi

Programmēšanas valodu saraksts, kas atbalsta vairāku mantojumu:

  • C++
  • Python
  • Rubīns

Programmēšanas valodu saraksts, kuras NEatbalsta vairākkārtēju pārmantošanu:

  • Java
  • C#
  • PHP

Visbeidzot, vienkārša mantošana un daudzkārtēja mantošana ir divi galvenie jēdzieni objektorientētā programmēšanā. Vienkārša mantošana nozīmē, ka pakārtotā klase var mantot tikai vienas vecākklases rekvizītus un metodes, savukārt vairākkārtēja mantošana nozīmē, ka pakārtotā klase var mantot rekvizītus un metodes no vairāk nekā vienas vecākklases. Ir svarīgi atzīmēt, ka ne visas programmēšanas valodas pieļauj daudzkārtēju pārmantošanu iespējamo metožu un īpašību neskaidrības dēļ.

Pārliecinieties, ka saprotat atšķirību starp šiem diviem objektorientētās programmēšanas galvenajiem jēdzieniem!