Lahat ng Kailangan Mong Malaman Tungkol sa Mana sa C ++



Magbibigay sa iyo ang artikulong ito ng isang detalyado at komprehensibong kaalaman tungkol sa Mana sa C ++, iba't ibang uri ito at kung paano ito ipatupad.

Ang C ++ ay isang wikang Nauugnay sa Bagay. Ang abstraction ng data, Polymorphism, Encapsulation, at Inheritance ay ang mga pundasyon ng OOP. Sa post na ito, mauunawaan natin kung ano ang mana? Mga uri ng mana sa C ++, at lahat ng kinakailangang mga konsepto na nauugnay dito mula sa simula. Sa huli, titingnan din natin ang disbentaha ng malakas na konseptong ito at susubukan itong lutasin.

Ano ang Mana sa C ++

Ang mana ay isa sa pinakamakapangyarihan at malawak na ginagamit na mga konsepto sa C ++ o anumang iba pang wika na nakatuon sa object. Ang pag-unawa sa konseptong ito ay nangangailangan ng kaunting kaalaman sa mga klase at bagay. Gamit ang Mana, makakalikha kami ng isang klase na binubuo ng mga pangkalahatang pamamaraan at katangian. Ang klase na ito ay maaaring minana ng iba pang mga klase na naglalaman ng mas tiyak na mga pamamaraan.





Mana sa C ++

Sa pamamagitan nito, hindi namin kailangang magsulat ng parehong pagpapaandar nang paulit-ulit na nakakatipid ng oras at nagdaragdag ng kakayahang mabasa ng code.



Syntax:

klase na nagmula sa klase: access_type base_class {// class body}

Base klase: Ang klase na binubuo ng lahat ng mga pangkalahatang pamamaraan at katangian na maaaring maibahagi ng iba pang mga klase upang madagdagan ang kakayahang mabasa ang code ay tinatawag na isang batayang klase.

Nakuha na klase: Ang klase na binubuo ng mas tiyak na mga pamamaraan at nagmamana ng isang klase ay tinatawag na isang hinahangang klase. Ang isang nagmula sa klase ay maaari ding maging isang batayang klase para sa ilang iba pang nagmula sa klase.



Kung lumikha kami ng isang klase XYZ, na may ilang mga katangian at pamamaraan. Ngayon ang isang mag-aaral sa klase ay magkakaroon ng ilang iba pang mga katangian, ngunit isasama rin ang mga elemento ng klase ng XYZ at pareho ang para sa isang klase ng guro. Tingnan natin ang isang diagram:

Kaya, ang mag-aaral at klase ng guro ay magmamana mula sa XYZ.

Access specifier- Naintindihan namin kung paano ang isang klase ay maaaring mana ng ibang klase. Ngunit ang ilang mga tao ay maaaring sabihin na ito ay isang hindi ligtas na pamamaraan dahil ang lahat ng mga katangian at pamamaraan ng batayang klase o ang magulang na klase ay ibinabahagi sa klase ng bata o sa hinango na klase. Halimbawa, kung ang isang klase na 'Bank' ay minana ng klase ng mga 'customer' at 'namumuhunan'. Ang mga katangian ng klase na 'Bank' tulad ng 'vaultpassword', iba pang impormasyon na nauugnay sa customer at pribadong data ay ibinabahagi sa 'mga customer' at sa klase ng 'namumuhunan' na hindi ligtas.

Upang malutas ang problema sa itaas C ++ ay gumagamit ng mga access specifier upang malimitahan ang pag-access ng mga katangian ng base class sa nakuha na klase. Mayroong isang kabuuang 3 uri ng mga specifier ng pag-access sa C ++

  1. Pampubliko
  2. Pribado
  3. Protektado

Ang talahanayan sa ibaba ay magbibigay sa iyo ng isang mahusay na pag-unawa sa kung anong uri ng data ang maaaring ma-access sa pamamagitan ng nagmula sa klase ayon sa iba't ibang mga detalye sa pag-access.

Accessifier Public Data Pribadong Data Protektadong Data
Pribado Hindi ManaHindi ManaHindi Mana
Protektado Protektado Pribado Protektado
Pampubliko Pampubliko Pribado Protektado

Single na Mana

Ang Single Mana ay maaaring isaalang-alang bilang isang payak na form ng mana ng vanilla. Sa solong mana, ang isang solong klase ay nagmamana mula sa isang batayang klase.

# isama ang paggamit ng namespace std class Train {int Numberofwheels int Numberofcoaches pampubliko: void Traininfo (int n, int m) {Numberofwheels = n Numberofcoaches = m} void showinfo () {cout<Ang kaso ng mana na ito ay tinawag bilang pamana ng Multilevel. Ang klase sa pagitan ng una at ng huling klase ay kilala rin bilang isang intermediate base class.Ano sa palagay mo, maaari bang magmana ang huling klase ng mga miyembro ng unang klase? Oo, maaari

# isama ang paggamit ng namespace std class Una {protektado: int a public: void getinfofirst (int x) {a = x} void showinfofirst () {std :: cout<< 'Value of a = ' < 

Output:

si java ay may-isang relasyon

Halaga ng isang = 10

Halaga ng b = 20

Halaga ng c = 30

Halaga ng d = 50

Pamana ng Hierarchical

Ang ilang mga problema ay hindi malulutas sa tulong ng pamana ng solong o multilevel. Sa hierarchical mana, higit sa 1 klase ang magmamana mula sa isang solong batayang klase.

pl sql developer tutorial para sa mga nagsisimula
# isama ang paggamit ng namespace std class College {public: College () {cout<< 'We are in class College' << endl } } class Student: public College { } class Faculty: public College { } int main() { Student student Faculty faculty return 0 }

Output:

Nasa klase kami sa College

Nasa klase kami sa College

Maramihang Mana sa C ++

Nakita namin sa hierarchical mana ang isang batayang klase ay mayroong higit sa isang nagmula sa klase. Sa maraming Mana na nagmula sa isang nagmula sa klase ay may higit sa isang batayang klase.

# isama ang paggamit ng namespace std class One {protektado: int a public: void getinfoOne (int x) {a = x}} class Two {protektado: int b public: void getinfoTwo (int y) {b = y}} class Pangunahing: pampubliko Isa, pampubliko Dalawang {pampubliko: void Display () {std :: cout<< 'Value of a = ' < Sa puntong ito, mayroon kaming mahusay na pag-unawa sa lahat ng mga uri ng pamana na ginamit sa C ++. Ngunit, teka paano kung nais nating gumamit ng 2 magkakaibang uri ng mana? Posible ba? Oo, posible sa tulong ng hybrid Inheritance. Sa hybrid na Mana, pinagsasama namin ang 2 magkakaibang uri ng mana. Halimbawa- Multilevel at maraming mana, Hierarchical at maraming mana, atbp.

# isama ang paggamit ng namespace std class World {protektado: int a public: void getinfoWorld (int x) {a = x}} class Continent: public World {protektado: int b public: void getinfoContient (int y) {b = y}} klase ng Bansa {protektado: int d public: void getinfoCountry (int m) {d = m}} klase Australia: public Continent, public Country {public: void Display () {std :: cout<< 'Value of a = ' < 

Unawain natin ang diagram sa itaas na makakatulong sa amin na maunawaan ang problema sa brilyante. nagmamana ang klase B at klase C mula sa klase A samakatuwid parehong klase A at klase B ay may mga katangian at pamamaraan ng klase A. kung ang klase D ay nagmamana mula sa Class B pati na rin ang klase C. ang klase D ay magkakaroon ng lahat ng mga katangian ng klase B at klase C Mayroon din itong lahat ng mga katangian ng klase A na minana mula sa klase B pati na rin sa klase C. kung gayon kung gagawa tayo ng isang bagay ng klase D at tumawag sa isang pamamaraan ng klase A. malilikha ang isang hindi siguradong sitwasyon at malilito ang tagatala mula sa kung saan dapat itong pamamaraan ng klase ng A, mula sa klase B o klase D.

Upang malutas ang kalabuan na ito gumagamit kami ng isang konsepto na tinatawag na virtual base class. Kapag gumawa kami ng isang batayang klase ng isang virtual base class isang kopya lamang ng klase na iyon ang minana anuman ang bilang ng mga umiiral na mga landas sa pagitan ng virtual base class at isang nagmula sa klase.

klase A {} klase B: virtual na publiko A {} klase C: virtual na publiko A {} klase D: publiko C, publiko D {}

Sa pamamagitan nito, natapos namin ang artikulong ito ng Inheritance sa C ++. Kung nais mong matuto nang higit pa, tingnan ang ni Edureka, isang pinagkakatiwalaang kumpanya sa pag-aaral sa online. Ang kurso sa pagsasanay at sertipikasyon ng Java J2EE at SOA ng Edureka ay idinisenyo upang sanayin ka para sa parehong core at advanced na mga konsepto ng Java kasama ang iba't ibang mga balangkas ng Java tulad ng Hibernate & Spring.

May tanong ba sa amin? Mangyaring banggitin ito sa seksyon ng mga komento ng blog na ito at babalikan ka namin sa lalong madaling panahon.