సి ++ లో వారసత్వం గురించి మీరు తెలుసుకోవలసినది



ఈ వ్యాసం మీకు C ++ లో వారసత్వం గురించి వివరణాత్మక మరియు సమగ్రమైన జ్ఞానాన్ని అందిస్తుంది, ఇది వివిధ రకాలు మరియు దానిని ఎలా అమలు చేయాలి.

సి ++ ఒక ఆబ్జెక్ట్ ఓరియెంటెడ్ భాష. డేటా సంగ్రహణ, పాలిమార్ఫిజం, ఎన్‌క్యాప్సులేషన్ మరియు వారసత్వం OOP యొక్క మూలస్తంభాలు. ఈ పోస్ట్‌లో, వారసత్వం అంటే ఏమిటి? C ++ లో వారసత్వ రకాలు మరియు మొదటి నుండి దానికి సంబంధించిన అన్ని అవసరమైన అంశాలు. చివరికి, మేము ఈ శక్తివంతమైన భావన యొక్క లోపాన్ని కూడా పరిశీలిస్తాము మరియు దాన్ని పరిష్కరించడానికి ప్రయత్నిస్తాము.

సి ++ లో వారసత్వం అంటే ఏమిటి

సి ++ లేదా మరే ఇతర ఆబ్జెక్ట్-ఓరియెంటెడ్ భాషలో అత్యంత శక్తివంతమైన మరియు విస్తృతంగా ఉపయోగించబడే భావనలలో వారసత్వం ఒకటి. ఈ భావనను అర్థం చేసుకోవడానికి తరగతులు మరియు వస్తువుల గురించి కొంచెం జ్ఞానం అవసరం. వారసత్వాన్ని ఉపయోగించి, మేము సాధారణ పద్ధతులు మరియు లక్షణాలను కలిగి ఉన్న తరగతిని సృష్టించవచ్చు. ఈ తరగతిని మరింత నిర్దిష్ట పద్ధతులను కలిగి ఉన్న ఇతర తరగతుల ద్వారా వారసత్వంగా పొందవచ్చు.





సి ++ లో వారసత్వం

ఇలా చేయడం ద్వారా మనం అదే కార్యాచరణలను మళ్లీ మళ్లీ వ్రాయవలసిన అవసరం లేదు, ఇది సమయాన్ని ఆదా చేస్తుంది మరియు కోడ్ యొక్క చదవడానికి సామర్థ్యాన్ని పెంచుతుంది.



సింటాక్స్:

డేటా సైన్స్ కోర్సు అంటే ఏమిటి
తరగతి ఉత్పన్నమైన_క్లాస్: యాక్సెస్_టైప్ బేస్_క్లాస్ {// క్లాస్ బాడీ}

బేస్ క్లాస్: కోడ్ రీడబిలిటీని పెంచడానికి ఇతర తరగతుల ద్వారా పంచుకోగల అన్ని సాధారణ పద్ధతులు మరియు లక్షణాలను కలిగి ఉన్న తరగతిని బేస్ క్లాస్ అంటారు.

ఉత్పన్నమైన తరగతి: మరింత నిర్దిష్ట పద్ధతులను కలిగి ఉన్న తరగతిని వారసత్వంగా పొందిన తరగతిని ఉత్పన్న తరగతి అంటారు. ఉత్పన్నమైన తరగతి కొన్ని ఇతర ఉత్పన్న తరగతికి కూడా బేస్ క్లాస్ కావచ్చు.



మేము కొన్ని లక్షణాలను మరియు పద్ధతులతో, తరగతి XYZ ను సృష్టిస్తే. ఇప్పుడు ఒక తరగతి విద్యార్థికి కొన్ని ఇతర లక్షణాలు ఉంటాయి, కానీ ఇందులో XYZ క్లాస్ యొక్క అంశాలు కూడా ఉంటాయి మరియు ఫ్యాకల్టీ క్లాస్ కోసం కూడా అదే జరుగుతుంది. రేఖాచిత్రాన్ని చూద్దాం:

కాబట్టి, విద్యార్థి మరియు అధ్యాపక తరగతి XYZ నుండి వారసత్వంగా పొందుతాయి.

యాక్సెస్ స్పెసిఫైయర్- ఒక తరగతి మరొక తరగతిని ఎలా వారసత్వంగా పొందగలదో మేము అర్థం చేసుకున్నాము. బేస్ క్లాస్ లేదా పేరెంట్ క్లాస్ యొక్క అన్ని గుణాలు మరియు పద్ధతులు చైల్డ్ క్లాస్ లేదా ఉత్పన్నమైన క్లాస్‌తో పంచుకోబడినందున ఇది అసురక్షిత పద్ధతి అని కొంతమంది అనవచ్చు. ఉదాహరణకు, ఒక తరగతి ‘బ్యాంక్’ తరగతి ‘కస్టమర్లు’ మరియు ‘పెట్టుబడిదారులు’ వారసత్వంగా పొందినట్లయితే. తరగతి ‘బ్యాంక్’ యొక్క లక్షణాలైన ‘వాల్ట్‌పాస్‌వర్డ్’, ఇతర కస్టమర్-సంబంధిత సమాచారం మరియు ప్రైవేట్ డేటా ‘కస్టమర్‌లు’ మరియు ‘ఇన్వెస్టర్ల’ తరగతితో సురక్షితం కాదు.

పై సమస్యను పరిష్కరించడానికి, C ++ బేస్ క్లాస్ లక్షణాల ప్రాప్యతను ఉత్పన్న తరగతికి పరిమితం చేయడానికి యాక్సెస్ స్పెసిఫైయర్‌లను ఉపయోగిస్తుంది. సి ++ లో మొత్తం 3 రకాల యాక్సెస్ స్పెసిఫైయర్లు ఉన్నాయి

  1. ప్రజా
  2. ప్రైవేట్
  3. రక్షించబడింది

విభిన్న ప్రాప్యత నిర్దేశకుల ప్రకారం ఉత్పన్నమైన తరగతి ద్వారా ఏ రకమైన డేటాను యాక్సెస్ చేయవచ్చనే దానిపై ఈ క్రింది పట్టిక మీకు మంచి అవగాహన ఇస్తుంది.

యాక్సెస్ స్పెసిఫైయర్ పబ్లిక్ డేటా ప్రైవేట్ డేటా రక్షిత డేటా
ప్రైవేట్ వారసత్వంగా లేదువారసత్వంగా లేదువారసత్వంగా లేదు
రక్షించబడింది రక్షించబడింది ప్రైవేట్ రక్షించబడింది
ప్రజా ప్రజా ప్రైవేట్ రక్షించబడింది

ఒకే వారసత్వం

ఒకే వారసత్వాన్ని వారసత్వం యొక్క సాదా వనిల్లా రూపంగా పరిగణించవచ్చు. ఒకే వారసత్వంలో, ఒకే తరగతి బేస్ క్లాస్ నుండి వారసత్వంగా వస్తుంది.

# నేమ్‌స్పేస్‌ను ఉపయోగించి చేర్చండి std class Train {int Numberofwheels int Numberofcoaches public: void Traininfo (int n, int m) {Numberofwheels = n Numberofcoaches = m} void showinfo () out cout<ఈ వారసత్వ కేసును మల్టీలెవల్ వారసత్వం అంటారు. మొదటి మరియు చివరి తరగతి మధ్య ఉన్న తరగతిని ఇంటర్మీడియట్ బేస్ క్లాస్ అని కూడా అంటారు.మీరు ఏమనుకుంటున్నారు, చివరి తరగతి మొదటి తరగతి సభ్యులను వారసత్వంగా పొందగలదా? అవును అది అవ్వొచ్చు

# నేమ్‌స్పేస్‌ను ఉపయోగించడం చేర్చండి మొదటి {రక్షిత: int పబ్లిక్: శూన్యమైన getinfofirst (int x) {a = x} void showinfofirst () {std :: cout<< 'Value of a = ' < 

అవుట్పుట్:

A = 10 విలువ

బి = 20 విలువ

సి = 30 విలువ

D = 50 విలువ

క్రమానుగత వారసత్వం

సింగిల్ లేదా బహుళస్థాయి వారసత్వ సహాయంతో కొన్ని సమస్యలను పరిష్కరించలేము. క్రమానుగత వారసత్వంలో, ఒకే బేస్ క్లాస్ నుండి 1 కంటే ఎక్కువ తరగతి వారసత్వంగా వస్తుంది.

# నేమ్‌స్పేస్‌ను ఉపయోగించడం చేర్చండి std class College {public: College () out cout<< 'We are in class College' << endl } } class Student: public College { } class Faculty: public College { } int main() { Student student Faculty faculty return 0 }

అవుట్పుట్:

మేము క్లాస్ కాలేజీలో ఉన్నాము

మేము క్లాస్ కాలేజీలో ఉన్నాము

సి ++ లో బహుళ వారసత్వం

క్రమానుగత వారసత్వంలో ఒక బేస్ క్లాస్‌లో ఒకటి కంటే ఎక్కువ ఉత్పన్నమైన తరగతులు ఉన్నాయని మేము చూశాము. బహుళ వారసత్వంలో ఒక ఉత్పన్న తరగతి ఒకటి కంటే ఎక్కువ బేస్ తరగతులను కలిగి ఉంది.

# నేమ్‌స్పేస్ std క్లాస్ వన్ {రక్షిత: int పబ్లిక్: శూన్యమైన getinfoOne (int x) {a = x}} క్లాస్ టూ {రక్షిత: int b పబ్లిక్: శూన్యమైన getinfoTwo (int y) {b = y}} తరగతి ప్రధాన: పబ్లిక్ వన్, పబ్లిక్ టూ {పబ్లిక్: శూన్య ప్రదర్శన () {std :: cout<< 'Value of a = ' < ఈ సమయంలో, సి ++ లో ఉపయోగించే అన్ని రకాల వారసత్వం గురించి మాకు మంచి అవగాహన ఉంది. కానీ, మేము 2 రకాలైన వారసత్వాన్ని ఉపయోగించాలనుకుంటే ఏమి వేచి ఉండండి? ఇది సాధ్యమేనా? అవును, హైబ్రిడ్ ఇన్హెరిటెన్స్ సహాయంతో ఇది సాధ్యపడుతుంది. హైబ్రిడ్ వారసత్వంలో, మేము 2 రకాలైన వారసత్వాన్ని మిళితం చేస్తాము. ఉదాహరణకు- బహుళస్థాయి మరియు బహుళ వారసత్వం, క్రమానుగత మరియు బహుళ వారసత్వం మొదలైనవి.

# నేమ్‌స్పేస్ STD క్లాస్ వరల్డ్ {రక్షిత: int పబ్లిక్: శూన్యమైన getinfoWorld (int x) {a = x}} తరగతి ఖండం: పబ్లిక్ వరల్డ్ {రక్షిత: int b పబ్లిక్: శూన్యమైన getinfoContinte (int y) {b = y}} తరగతి దేశం {రక్షిత: int d పబ్లిక్: void getinfoCountry (int m) {d = m}} తరగతి ఆస్ట్రేలియా: ప్రజా ఖండం, ప్రజా దేశం {పబ్లిక్: శూన్య ప్రదర్శన () {std :: cout<< 'Value of a = ' < 

వజ్రాల సమస్యను అర్థం చేసుకోవడంలో మాకు సహాయపడే పై ​​రేఖాచిత్రాన్ని అర్థం చేసుకుందాం. క్లాస్ బి మరియు క్లాస్ సి క్లాస్ ఎ నుండి వారసత్వంగా ఉంటాయి కాబట్టి క్లాస్ ఎ మరియు క్లాస్ బి రెండింటికీ క్లాస్ ఎ యొక్క గుణాలు మరియు పద్ధతులు ఉన్నాయి. క్లాస్ డి క్లాస్ బి నుండి క్లాస్ సి వారసత్వంగా ఉంటే క్లాస్ సి క్లాస్ డి మరియు క్లాస్ సి యొక్క అన్ని లక్షణాలను కలిగి ఉంటుంది. తరగతి A మరియు క్లాస్ సి నుండి వారసత్వంగా పొందిన క్లాస్ ఎ యొక్క అన్ని లక్షణాలను కూడా కలిగి ఉంది. అందువల్ల మనం క్లాస్ డి యొక్క ఒక వస్తువును తయారు చేసి క్లాస్ ఎ యొక్క పద్ధతిని పిలిస్తే అస్పష్టమైన పరిస్థితి ఏర్పడుతుంది మరియు కంపైలర్ ఎక్కడ నుండి గందరగోళం చెందుతుంది ఇది క్లాస్ బి లేదా క్లాస్ డి నుండి A యొక్క క్లాస్ పద్దతి ఉండాలి.

ఈ అస్పష్టతను పరిష్కరించడానికి మేము వర్చువల్ బేస్ క్లాస్ అనే భావనను ఉపయోగిస్తాము. మేము బేస్ క్లాస్‌ను వర్చువల్ బేస్ క్లాస్‌గా చేసినప్పుడు, వర్చువల్ బేస్ క్లాస్ మరియు ఉత్పన్నమైన క్లాస్ మధ్య ఉన్న మార్గాల సంఖ్యతో సంబంధం లేకుండా ఆ క్లాస్ యొక్క ఒక కాపీ మాత్రమే వారసత్వంగా వస్తుంది.

తరగతి A {} తరగతి B: వర్చువల్ పబ్లిక్ A}} తరగతి C: వర్చువల్ పబ్లిక్ A}} తరగతి D: పబ్లిక్ సి, పబ్లిక్ డి}}

దీనితో, మేము C ++ వ్యాసంలో ఈ వారసత్వ ముగింపుకు వచ్చాము. మీరు మరింత తెలుసుకోవాలనుకుంటే, చూడండి విశ్వసనీయ ఆన్‌లైన్ లెర్నింగ్ సంస్థ ఎడురేకా చేత. ఎడురేకా యొక్క జావా J2EE మరియు SOA శిక్షణ మరియు ధృవీకరణ కోర్సు కోర్ మరియు అధునాతన జావా భావనలతో పాటు హైబర్నేట్ & స్ప్రింగ్ వంటి వివిధ జావా ఫ్రేమ్‌వర్క్‌ల కోసం మీకు శిక్షణ ఇవ్వడానికి రూపొందించబడింది.

తోలుబొమ్మ vs అన్సిబుల్ vs చెఫ్

మాకు ప్రశ్న ఉందా? దయచేసి ఈ బ్లాగ్ యొక్క వ్యాఖ్యల విభాగంలో దీనిని ప్రస్తావించండి మరియు మేము వీలైనంత త్వరగా మిమ్మల్ని సంప్రదిస్తాము.