Rozdiel medzi dedičstvom a vlastníctvom

Rozdiel medzi dedičstvom a vlastníctvom
Rozdiel medzi dedičstvom a vlastníctvom

Video: Rozdiel medzi dedičstvom a vlastníctvom

Video: Rozdiel medzi dedičstvom a vlastníctvom
Video: 川普混淆公共卫生和个人医疗重症药乱入有无永久肺损伤?勿笑天灾人祸染疫天朝战乱不远野外生存食物必备 Trump confuses public and personal healthcare issue 2024, Júl
Anonim

Dedičstvo vs. kontajnerová doprava

Dedičnosť a kontajner sú dva dôležité koncepty nachádzajúce sa v OOP (Object Oriented Programming Example: C++). Zjednodušene povedané, ako kontajner, tak aj dedičnosť sa zaoberajú poskytovaním dodatočných vlastností alebo správania triede. Dedičnosť je schopnosť triedy zdediť vlastnosti a správanie od nadradenej triedy jej rozšírením. Na druhej strane, Containership je schopnosť triedy obsahovať objekty rôznych tried ako členské dáta.

Čo je dedičnosť?

Ako je uvedené vyššie, dedičnosť je schopnosť triedy zdediť vlastnosti a správanie od nadradenej triedy jej rozšírením. Dedičnosť v podstate poskytuje opätovné použitie kódu tým, že umožňuje rozšírenie vlastností a správania existujúcej triedy o novo definovanú triedu. Ak trieda A rozširuje B, potom trieda B sa nazýva rodičovská trieda (alebo nadtrieda) a trieda A sa nazýva podradená trieda (alebo odvodená trieda/podtrieda). V tomto príklade scenára trieda A zdedí všetky verejné a chránené atribúty a metódy nadtriedy (B). Podtrieda môže voliteľne prepísať (poskytnúť metódam novú alebo rozšírenú funkčnosť) správanie zdedené z nadradenej triedy. Dedičnosť predstavuje v OOP vzťah „je-a“. To v podstate znamená, že A je tiež B. Inými slovami, B môže byť trieda so všeobecným popisom určitej entity reálneho sveta, ale A špecifikuje určitú špecializáciu. V reálnom svete problém s programovaním by sa trieda Osoba mohla rozšíriť na vytvorenie triedy Zamestnanec. Toto sa nazýva špecializácia. Môžete však tiež najprv vytvoriť triedu Zamestnanec a potom ju zovšeobecniť aj na triedu Osoba (t.j.e. zovšeobecnenie). V tomto príklade bude mať zamestnanec všetky vlastnosti a správanie osoby (t. j. zamestnanec je tiež osoba) a môže obsahovať aj niektoré ďalšie funkcie (takže osoba nie je zamestnancom).

Čo je kontajnerová preprava?

Kontajnerovosť je schopnosť triedy obsahovať objekty rôznych tried ako členské dáta. Napríklad trieda A môže obsahovať objekt triedy B ako člen. Tu môžu byť všetky verejné metódy (alebo funkcie) definované v B vykonávané v rámci triedy A. Trieda A sa stáva kontajnerom, zatiaľ čo trieda B sa stáva obsiahnutou triedou. Kontajnerovanie sa tiež označuje ako zloženie. V tomto príklade možno povedať, že trieda A sa skladá z triedy B. V OOP predstavuje kontajnerová preprava vzťah „má-a“. Je dôležité poznamenať, že aj keď má kontajner prístup na vykonanie všetkých verejných metód obsiahnutej triedy, nie je schopný zmeniť alebo poskytnúť ďalšie funkcie. Pokiaľ ide o problém programovania v reálnom svete, objekt triedy TextBox môže byť obsiahnutý v triede Form, a teda možno povedať, že Formulár obsahuje TextBox (alebo alternatívne, Formulár pozostáva z TextBoxu).

Rozdiel medzi dedičstvom a kontajnerovým právom

Hoci dedičnosť a kontajner sú dva koncepty OOP, úplne sa líšia v tom, čo umožňujú programátorovi dosiahnuť. Dedičnosť je schopnosť triedy zdediť vlastnosti a správanie od nadradenej triedy jej rozšírením, zatiaľ čo kontajnerová schopnosť je schopnosť triedy obsahovať objekty rôznych tried ako členské údaje. Ak je trieda rozšírená, zdedí všetky verejné a chránené vlastnosti/správanie a toto správanie môže byť prepísané podtriedou. Ak je však trieda obsiahnutá v inej, kontajner nezíska možnosť zmeniť alebo pridať správanie k obsiahnutej triede. Dedičnosť predstavuje vzťah „je-a“v OOP, zatiaľ čo Kontajnerstvo predstavuje vzťah „má-a“.

Odporúča: