వర్చువల్ మరియు ప్యూర్ వర్చువల్ ఫంక్షన్ మధ్య వ్యత్యాసం

రచయిత: Laura McKinney
సృష్టి తేదీ: 2 ఏప్రిల్ 2021
నవీకరణ తేదీ: 7 మే 2024
Anonim
OOPలో వర్చువల్ ఫంక్షన్‌లు, ప్యూర్ వర్చువల్ ఫంక్షన్‌లు మరియు అబ్‌స్ట్రాక్ట్ క్లాస్‌ల మధ్య సంబంధం వివరించబడింది
వీడియో: OOPలో వర్చువల్ ఫంక్షన్‌లు, ప్యూర్ వర్చువల్ ఫంక్షన్‌లు మరియు అబ్‌స్ట్రాక్ట్ క్లాస్‌ల మధ్య సంబంధం వివరించబడింది

విషయము


వర్చువల్ ఫంక్షన్ మరియు స్వచ్ఛమైన వర్చువల్ ఫంక్షన్ రెండూ రన్ టైమ్ పాలిమార్ఫిజం యొక్క భావనలు. ‘మధ్య ప్రధాన వ్యత్యాసంవర్చువల్ ఫంక్షన్ ’ మరియు ‘స్వచ్ఛమైన వర్చువల్ ఫంక్షన్’ అంటే ‘వర్చువల్ ఫంక్షన్’ కి బేస్ క్లాస్‌లో దాని నిర్వచనం ఉంది మరియు వారసత్వంగా పొందిన క్లాసులు కూడా దానిని పునర్నిర్వచించాయి. స్వచ్ఛమైన వర్చువల్ ఫంక్షన్‌కు బేస్ క్లాస్‌లో నిర్వచనం లేదు, మరియు వారసత్వంగా పొందిన అన్ని తరగతులు దానిని పునర్నిర్వచించవలసి ఉంటుంది.

ఏదేమైనా, వర్చువల్ ఫంక్షన్‌ను డైనమిక్ డిస్పాచ్ మరియు రన్-టైమ్ డిస్పాచ్ అని కూడా పిలుస్తారు, ఎందుకంటే పిలువబడే ఫంక్షన్ రన్ టైమ్‌లో పేర్కొన్న వస్తువు రకానికి అనుగుణంగా పేర్కొనబడుతుంది.

పాలిమార్ఫిజానికి సి ++ మరియు జావా భాషలు మద్దతు ఇస్తున్నాయి. జావాలో, వర్చువల్ ఫంక్షన్ C ++ యొక్క పదం కాబట్టి, "వర్చువల్ ఫంక్షన్" కు బదులుగా "ఓవర్రైడింగ్" అనే పదాన్ని ఉపయోగిస్తారు.

  1. పోలిక చార్ట్
  2. నిర్వచనం
  3. కీ తేడాలు
  4. ముగింపు

పోలిక చార్ట్

పోలిక కోసం ఆధారంవర్చువల్ ఫంక్షన్స్వచ్ఛమైన వర్చువల్ ఫంక్షన్
ప్రాథమికవర్చువల్ ఫంక్షన్ బేస్ క్లాస్‌లో వాటి నిర్వచనాన్ని కలిగి ఉంది.ప్యూర్ వర్చువల్ ఫంక్షన్‌కు బేస్ క్లాస్‌లో నిర్వచనం లేదు.
ప్రకటనవర్చువల్ ఫంక్ట్_పేరు (పారామితి_ జాబితా) {. . . . .};వర్చువల్ ఫంక్ట్_పేరు (పారామితి_ జాబితా) = 0;
ఉత్పన్నమైన తరగతిఉత్పన్నమైన అన్ని తరగతులు బేస్ క్లాస్ యొక్క వర్చువల్ ఫంక్షన్‌ను భర్తీ చేయకపోవచ్చు.ఉత్పన్నమైన అన్ని తరగతులు బేస్ క్లాస్ యొక్క వర్చువల్ ఫంక్షన్‌ను భర్తీ చేయాలి.
ప్రభావం

వర్చువల్ ఫంక్షన్లు క్రమానుగత స్వభావం కలిగి ఉంటాయి; ఏదైనా ఉత్పన్న తరగతులు బేస్ క్లాస్ యొక్క వర్చువల్ ఫంక్షన్‌ను భర్తీ చేయకపోతే అది సంకలనాన్ని ప్రభావితం చేయదు.అన్ని ఉత్పన్న తరగతులు బేస్ క్లాస్ యొక్క వర్చువల్ ఫంక్షన్‌ను భర్తీ చేయడంలో విఫలమైతే, సంకలన లోపం సంభవిస్తుంది.
వియుక్త తరగతికాన్సెప్ట్ లేదు.ఒక తరగతిలో కనీసం ఒక స్వచ్ఛమైన వర్చువల్ ఫంక్షన్ ఉంటే, అది నైరూప్యంగా ప్రకటించబడుతుంది.


వర్చువల్ ఫంక్షన్ యొక్క నిర్వచనం

ది వర్చువల్ ఫంక్షన్ బేస్ క్లాస్ యొక్క సభ్యుల ఫంక్షన్, మరియు ఇది బేస్ క్లాస్‌ని వారసత్వంగా పొందిన ఉత్పన్న తరగతులచే పునర్నిర్వచించబడుతుంది. వారసత్వంగా పొందిన అన్ని తరగతులు వర్చువల్ ఫంక్షన్‌ను పునర్నిర్వచించాల్సిన అవసరం లేదు, ఇది దాని పనితీరు అవసరమయ్యే ఉత్పన్న తరగతులచే మాత్రమే పునర్నిర్వచించబడింది. కీవర్డ్‌కి ముందు ఉన్న బేస్ క్లాస్‌లో ఫంక్షన్‌ను ప్రకటించడం ద్వారా వర్చువల్ ఫంక్షన్ సృష్టించబడుతుంది 'వాస్తవిక'.

ప్రకటన:

తరగతి బేస్ {పబ్లిక్: వర్చువల్ రకం funt_name (పారామితి-జాబితా) {. . . }};

వారసత్వంగా పొందిన తరగతులు ఏ ‘వర్చువల్’ కీవర్డ్ లేకుండా వర్చువల్ ఫంక్షన్‌ను పునర్నిర్వచించగలవు. ఉత్పన్నమైన తరగతులు దాని పనిని పూర్తి చేయడానికి వర్చువల్ ఫంక్షన్‌ను పునర్నిర్వచించాయి. వర్చువల్ ఫంక్షన్ ఉత్పన్నమైన తరగతులలో పునర్నిర్వచించబడినందున, మనకు ఒకే ఫంక్షన్ యొక్క బహుళ రూపాలు ఉన్నాయి. ఇప్పుడు, ఫంక్షన్ యొక్క ఏ సంస్కరణను పిలుస్తారు, ఆ ఫంక్షన్‌ను ప్రారంభించడానికి ఏ రకమైన వస్తువును సూచిస్తారు అనే దానిపై ఆధారపడి ఉంటుంది.


బహుళస్థాయి వారసత్వం

బహుళస్థాయి వారసత్వంలో, వర్చువల్ ఫంక్షన్‌ను దాని బేస్ క్లాస్ నుండి వారసత్వంగా పొందిన ఒక ఉత్పన్న తరగతి, మరొక ఉత్పన్న తరగతికి బేస్ క్లాస్‌గా ఉపయోగించినప్పుడు, వర్చువల్ ఫంక్షన్‌ను ఇంకా అధిగమించవచ్చు. కాబట్టి, వర్చువల్ ఫంక్షన్ వారసత్వంగా వచ్చినప్పుడు దాని వర్చువల్ స్వభావం కూడా వారసత్వంగా వస్తుంది.

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

స్వచ్ఛమైన వర్చువల్ ఫంక్షన్ యొక్క నిర్వచనం

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

పైన పేర్కొన్న రెండు పరిస్థితులను నిర్వహించడానికి, C ++ “స్వచ్ఛమైన వర్చువల్ ఫంక్షన్". ‘స్వచ్ఛమైన వర్చువల్ ఫంక్షన్’ బేస్ క్లాస్‌లో డిక్లేర్ చేయబడింది కాని బేస్ క్లాస్‌లో దాని నిర్వచనం లేదు. స్వచ్ఛమైన వర్చువల్ ఫంక్షన్ ఈ క్రింది విధంగా ప్రకటించబడింది.

వర్చువల్ రకం funct_name (పారామితి_ జాబితా) = 0;

బేస్ క్లాస్‌లో వర్చువల్ ఫంక్షన్‌ను “స్వచ్ఛమైన” చేసినప్పుడు, అప్పుడు పొందిన ప్రతి తరగతి బేస్ క్లాస్ యొక్క స్వచ్ఛమైన వర్చువల్ ఫంక్షన్‌ను తప్పనిసరిగా భర్తీ చేయాలి. ఉత్పన్నమైన తరగతి బేస్ క్లాస్ యొక్క స్వచ్ఛమైన వర్చువల్ ఫంక్షన్‌ను భర్తీ చేయడంలో విఫలమైతే, అది సంకలన లోపానికి దారి తీస్తుంది.

వియుక్త తరగతి

కనీసం ఒక స్వచ్ఛమైన ఫంక్షన్‌ను కలిగి ఉన్న తరగతిని ‘నైరూప్య తరగతి’ అంటారు. నైరూప్య తరగతుల వస్తువులు ఏవీ సృష్టించబడవు, కానీ మీరు నైరూప్య తరగతులకు సూచనలు మరియు పాయింటర్లను సృష్టించవచ్చు. నైరూప్య తరగతుల సభ్యులను నైరూప్య బేస్ తరగతిని వారసత్వంగా పొందిన ఉత్పన్న తరగతుల వస్తువు ద్వారా యాక్సెస్ చేయవచ్చు.

మీరు నైరూప్యతను ప్రకటించాలనుకునే తరగతి, కీవర్డ్‌ని ఉపయోగించండి 'నైరూప్య' దాని ముందు 'తరగతి' కీవర్డ్.

// ఉదాహరణకు నైరూప్య తరగతి తరగతి పేరు {. . వర్చువల్ రకం funct_name (పారామితి_ జాబితా) = 0; . . };

  1. వర్చువల్ ఫంక్షన్లు ఖచ్చితంగా బేస్ క్లాస్‌లో నిర్వచించబడతాయి మరియు ఉత్పన్నమైన క్లాస్‌లో పునర్నిర్వచించబడతాయి (ఓవర్రైడ్). మరోవైపు, స్వచ్ఛమైన వర్చువల్ ఫంక్షన్ బేస్ క్లాస్ ముఖ్యంగా బేస్ క్లాస్‌లో నిర్వచించబడలేదు
  2. అవసరమైతే ఉత్పన్నమైన వర్చువల్ ఫంక్షన్‌ను పునర్నిర్వచించండి (భర్తీ చేయండి), స్వచ్ఛమైన వర్చువల్ ఫంక్షన్ విషయంలో ఉత్పన్నమైన తరగతి ఖచ్చితంగా స్వచ్ఛమైన వర్చువల్ ఫంక్షన్‌ను పునర్నిర్వచించాలి.
  3. ఉత్పన్నమైన వర్చువల్ ఫంక్షన్‌ను పునర్నిర్వచించడంలో (ఓవర్‌రైడ్) విఫలమైతే అది బేస్ క్లాస్ యొక్క వర్చువల్ ఫంక్షన్‌ను ఉపయోగించవచ్చు. దీనికి విరుద్ధంగా, ఉత్పన్నమైన తరగతి స్వచ్ఛమైన వర్చువల్ ఫంక్షన్‌ను భర్తీ చేయడంలో విఫలమైతే, సంకలన లోపం సంభవిస్తుంది.
  4. వర్చువల్ ఫంక్షన్ కలిగి ఉన్న బేస్ క్లాస్‌ను తక్షణం చేయవచ్చు, అనగా దాని వస్తువును సృష్టించవచ్చు. దీనికి విరుద్ధంగా, స్వచ్ఛమైన వర్చువల్ ఫంక్షన్ కలిగిన బేస్ క్లాస్ అనగా ఒక నైరూప్య తరగతి పూర్తిగా నిర్వచించబడనందున ఒక నైరూప్య తరగతిని తక్షణం చేయలేము.

గమనిక:
‘వర్చువల్ ఫంక్షన్’ మరియు ‘స్వచ్ఛమైన వర్చువల్ ఫంక్షన్’ యొక్క నమూనా ప్రోగ్రామ్ అంతటా ఒకే విధంగా ఉంటుంది.

ముగింపు:

'వర్చువల్ ఫంక్షన్లు' మరియు 'స్వచ్ఛమైన వర్చువల్ ఫంక్షన్' రెండూ వాటి ప్రాముఖ్యతను కలిగి ఉన్నాయి, 'వర్చువల్ ఫంక్షన్ల'లో వలె, అన్ని ఉత్పన్నమైన వర్చువల్ ఫంక్షన్‌ను పునర్నిర్వచించాల్సిన అవసరం లేదు మరియు అన్ని ఉత్పన్నమైన వర్చువల్ ఫంక్షన్‌ను స్వచ్ఛమైన వర్చువల్‌గా పునర్నిర్వచించాలని మేము కోరుకుంటున్నాము. ఫంక్షన్ అక్కడ బాగా వర్తిస్తుంది.