Access control in inheritance public, protected, private c++ In Hindi
C++ प्रोग्रामिंग लैंग्वेज में क्लास पैरामीटर डाटा मेंबर्स एक्सेस कंट्रोल यह इंडीकेट करता है कि मौजूदा यूजर डिफाइन क्लास के डाटा टाइप मेंबर्स (क्लास पैरामीटर वेरिएबल्स और फंक्शन्स मेथड्स) को वर्त्तमान क्लास के आउटसाइड से कैसे एक्सेस और मैनेज किया जा सकता है। ये क्लास एक्सेस डाटा ऑब्जेक्ट मॉडिफायर्स क्लास डाटा टाइप में पब्लिक, प्रोटेक्टेड, और प्राइवेट क्लास डाटा एक्सेस मेथड तब भी इम्पोर्टेन्ट रोल प्ले करते हैं. जब एक बेस या पैरेंट क्लास दूसरी अन्य क्लास से डिराइव या सबक्लास में डिफाइन होती है. जैसे, इनहेरिटेंस क्लास पैरेंट और सबक्लास कांसेप्ट में।

There are three primary class data access specifiers in C++.
- Public specifiers – पब्लिक क्लास डाटा टाइप में यूजर डिफाइन क्लास डाटा मेंबर्स को क्लास के अंदर और बाहर कहीं से भी एक्सेस और मैनेज किया जा सकता है।
- Protected specifiers – प्रोटेक्टेड क्लास डाटा टाइप में यूजर डिफाइन क्लास डाटा मेंबर्स को सिर्फ़ क्लास और उसकी डिराइव्ड सबक्लास क्लास के अंदर से ही एक्सेस और मैनेज किया जा सकता हैं. लेकिन मौजूदा क्लास के बाहर से इन्हे एक्सेस नहीं किया जाता है।
- Private specifiers – प्राइवेट क्लास डाटा टाइप में यूजर डिफाइन क्लास डाटा मेंबर्स को सिर्फ़ उसी डिफाइन क्लास के अंदर ही एक्सेस और मैनेज किया जा सकता है, न कि क्लास के बाहर से या डिराइव्ड सबक्लास क्लास से इन्हे एक्सेस और मैनेज नहीं किया जा सकता है।
Class Data Member Access Control Concepts in C++ Inheritance.
जब यूजर डिफाइन कोई क्लास दूसरी अन्य क्लास से इनहेरिट होती है, तो बेस पैरेंट रुट क्लास के डाटा टाइप मेंबर्स का एक्सेस लेवल इनहेरिटेंस के टाइप मेथड जिसमे (पब्लिक, प्रोटेक्टेड, या प्राइवेट) क्लास एक्सेस मेथड पर डिपेंड करता है। यहाँ क्लास इनहेरिटेंस डिक्लेरेशन में अप्लाई किया गया क्लास डाटा एक्सेस मॉडिफायर यह फिक्स करता है कि बेस या रुट क्लास मेंबर्स को कैसे बेस क्लास से डिराइव्ड सबक्लास क्लास में इनहेरिट किया जाता है, और उन्हें जरूरत पड़ने पर डिराइव्ड क्लास से कैसे एक्सेस और मैनेज किया जा सकता है।
Public Inheritance Concepts in C++.
C++ प्रोग्रामिंग में पब्लिक इनहेरिटेंस एक सबसे अधिक यूज़ एक कॉमन कांसेप्ट है, और पब्लिक इनहेरिटेंस का ज्यादातर यूज़ “is-a” रिलेशनशिप्स मॉडल को रिप्रेजेंट करने में किया जाता है। इस कांसेप्ट में बेस यानि रुट क्लास के पब्लिक और प्रोटेक्टेड क्लास डाटा मेंबर टाइप, डिराइव्ड सबक्लास क्लास में पब्लिक और प्रोटेक्टेड नेचर में रहते हैं।
यूजर डिफाइन बेस रुट क्लास के पब्लिक डाटा मेंबर पैरामीटर, डिराइव्ड सबक्लास क्लास में पब्लिक नेचर के हो जाते हैं।
यूजर डिफाइन बेस रुट क्लास के प्रोटेक्टेड क्लास डाटा मेंबर, डिराइव्ड सबक्लास क्लास में प्रोटेक्टेड बिहैवियर के हो जाते हैं।
इसमें बेस या रुट क्लास के प्राइवेट क्लास डाटा मेंबर से इनहेरिट नहीं होते हैं, और डिराइव्ड सबक्लास क्लास में डायरेक्ट यूजर इनएक्सेसिबल रहते हैं।
Example of public class data member inheritance.
#include <iostream>
class Root {
public:
int publicArgs; // here Public class member argument define
void publicMethod() {
std::cout << “Root/Base class public method define” << std::endl;
}
protected:
int protectedArgs; // here Protected class member argument define
void protectedMethod() {
std::cout << “Root/Base class protected method define” << std::endl;
}
private:
int privateArgs; // here Private class member argument define
void privateMethod() {
std::cout << “Root/Base class private method define” << std::endl;
}
};
class Derived : public Root {
public:
void preview() {
// Accessing public member from Root class
publicArgs = 3; // here it publicArgs Allowed
publicMethod(); // here it Allowed publicMethod
// here it Accessing protected class member from the base or Root class
protectedArgs = 4; // here it Allowed protectedArgs
protectedMethod(); // here it Allowed protectedMethod
// here it Accessing private class member from Root class (not allowed) method
// privateArgs = 7; // Display Error – ‘privateArgs’ is private class method within this context
// privateMethod(); // Display Error – ‘privateMethod’ is private class method within this context
}
};
int main() {
Derived args;
args.preview();
return 0;
}
Explanation of public class data member inheritance.
- यहाँ इस एक्साम्प्ल में डिराइव्ड क्लास (Derived) बेस क्लास (Root) से पब्लिकली इनहेरिट होती है।
- बेस क्लास के पब्लिक डाटा मेंबर (publicArgs, publicMethod()) डिराइव्ड क्लास में डायरेक्ट एक्सेसिबल होते हैं, और उन्हें क्लास में डायरेक्ट एक्सेस और मैनेज किया जा सकता है।
- जहा बेस क्लास के प्रोटेक्टेड क्लास मेंबर डाटा टाइप में (protectedArgs, protectedMethod()) से भी डिराइव्ड सबक्लास क्लास में एक्सेसिबल होते हैं।
- बेस क्लास के प्राइवेट मेंबर (privateArgs, privateMethod()) डिराइव्ड या सबक्लास क्लास में एक्सेसिबल नहीं होते हैं, और बेस क्लास के लिए ये हमेशा प्राइवेट क्लास डाटा मेंबर के रूप में बने रहते हैं।
Protected Inheritance Concepts in C++.
C++ प्रोग्रामिंग में प्रोटेक्टेड क्लास डाटा मेंबर्स इनहेरिटेंस मेथड का यूज़ कम किया जाता है। जब C++ प्रोग्राम में किसी यूजर डिफाइन क्लास डाटा को प्रोटेक्टेड इनहेरिटेंस नेचर के साथ इनहेरिट किया जाता है, तो बेस या पैरेंट क्लास के पब्लिक और प्रोटेक्टेड क्लास डाटा मेंबर डिराइव्ड सबक्लास क्लास में प्रोटेक्टेड बिहैवियर के हो जाते हैं।
बेस या रुट क्लास के पब्लिक क्लास डाटा मेंबर डिराइव्ड सबक्लास क्लास में प्रोटेक्टेड नेचर के हो जाते हैं।
और क्लास में डिक्लेअर डिफाइन प्रोटेक्टेड क्लास डाटा मेंबर प्रोटेक्टेड नेचर के बने रहते हैं।
क्लास में डिफाइन प्राइवेट क्लास डाटा मेंबर अभी भी इनहेरिट नहीं होते हैं, और ये क्लास प्रोग्राम में इनएक्सेसिबल बने रहते है
Example of protected class data member inheritance.
#include <iostream>
class Root {
public:
int publicArgs; // here Public class member argument define
void publicMethod() {
std::cout << “Root/Base public class method define” << std::endl;
}
protected:
int protectedArgs; // here Protected class member argument define
void protectedMethod() {
std::cout << “Root/Base protected class method define” << std::endl;
}
private:
int privateArgs; // here Private class member argument define
void privateMethod() {
std::cout << “Root/ Base private class method define” << std::endl;
}
};
class Derived : protected Root { // here we define a Protected class inheritance
public:
void preview() {
publicArgs = 2; // here it permit, but publicArgs is now protected class method
publicMethod(); // here it permit, but publicMethod() is now protected class method
protectedArgs = 7; // here it permit
protectedMethod(); // here it permit
// privateArgs = 9; // Display Error – ‘privateArgs’ is private class method within this context
// privateMethod(); //Display Error – ‘privateMethod’ is private class method within this context
}
};
int main() {
Derived args;
args.preview();
// here it try to Access from outside the derived subclass class method
// args.publicArgs = 11; // Display Error – ‘publicArgs’ is now protected method
// args.publicMethod(); // Display Error – ‘publicMethod()’ is now protected method
return 0;
}
Explanation of protected class data member inheritance.
- यहाँ इस एक्साम्प्ल में डेरिव्ड सबक्लास क्लास (Derived) प्रोटेक्टेड इनहेरिटेंस का यूज़ करके एक बेस क्लास (Base) से इनहेरिट करता है।
- इसके परिणाम स्वरुप, बेस क्लास के पब्लिक डाटा मेंबर डेरिव्ड क्लास में प्रोटेक्टेड नेचर के हो जाते हैं।
- मौजूदा क्लास में प्रोटेक्टेड क्लास डाटा मेंबर हमेशा प्रोटेक्टेड नेचर के बने रहते हैं।
- प्राइवेट क्लास डाटा मेंबर मौजूदा क्लास में एक्सेस नहीं किए जा सकते है।
C++ प्रोग्रामिंग में पब्लिक और प्रोटेक्टेड क्लास इनहेरिटेंस के बीच मुख्य अंतर यह है कि प्रोटेक्टेड क्लास इनहेरिटेंस इनहेरिटेड क्लास डाटा मेंबर के एक्सेस को स्टॉप करता है। जो यूजर डिफाइन क्लास डाटा मेंबर सामान्य रूप से डिराइव्ड सबक्लास क्लास में पब्लिक डिफाइन होते हैं, (पब्लिक इनहेरिटेंस फीचर्स के साथ) वे प्रोटेक्टेड नेचर के हो जाते हैं, और उन्हें मौजूदा क्लास के बाहर से डायरेक्ट एक्सेस नहीं किया जा सकता है।
Private Inheritance class Concepts in C++.
C++ प्रोग्रामिंग में प्राइवेट इनहेरिटेंस क्लास डाटा मेंबर्स कांसेप्ट को “has-a” रिलेशनशिप मॉडल को रिप्रेजेंट करने में किया जाता है, जहाँ मौजूदा क्लास में डिफाइन डिराइव्ड सबक्लास क्लास बेस पैरेंट क्लास के इंटरफ़ेस को डायरेक्ट एक्सटर्नल वर्ल्ड के सामने रिप्रेजेंट नहीं करते है।
जिसमे बेस या रुट क्लास के पब्लिक क्लास डाटा और प्रोटेक्टेड डाटा मेंबर डिराइव्ड सबक्लास क्लास में प्राइवेट नेचर के हो जाते हैं।
प्राइवेट क्लास डाटा मेंबर अभी भी डिराइव्ड सबक्लास क्लास के लिए एक्सेस नहीं किए जा सकते है।
Example of private inheritance class data member.
#include <iostream>
class Root {
public:
int publicArgs; // here Public class member argument define
void publicMethod() {
std::cout << “Root/Base public class method define” << std::endl;
}
protected:
int protectedArgs; // here Protected class member argument define
void protectedMethod() {
std::cout << “Root/Base protected class method define” << std::endl;
}
private:
int privateArgs; // here Private class member argument define
void privateMethod() {
std::cout << “Root/Base private class method define” << std::endl;
}
};
class Derived : private Root { // here we define a Private inheritance
public:
void preview() {
publicArgs = 4; // here it permit, but publicArgs is now private in Derived subclass method
publicMethod(); // here it permit, but publicMethod() is now private in Derived subclass method
protectedArgs = 5; // here it permit, but protectedArgs is now private in Derived subclass
protectedMethod(); // here it permit
// privateArgs = 7; // Display Error – ‘privateArgs’ is private class method within this context
// privateMethod(); // Display Error – ‘privateMethod’ is private class method within this context
}
};
int main() {
Derived args;
args.preview();
// here it Access from outside the derived class
// args.publicArgs = 9; // Display Error – ‘publicArgs’ is now private in Derived class method
// args.publicMethod(); // Display Error – ‘publicMethod()’ is now private in Derived method
return 0;
}
Explanation of private inheritance class data member.
- यहाँ इस एक्साम्प्ल में डेरिव्ड सबक्लास क्लास (Derived) प्राइवेट इनहेरिटेंस को अप्लाई करके बेस रुट क्लास (Base) प्रॉपर्टीज से इनहेरिट करता है।
- इस वजह से, यह बेस पैरेंट क्लास के पब्लिक और प्रोटेक्टेड दोनों क्लास डाटा मेंबर अब डेरिव्ड सबक्लास क्लास में प्राइवेट नेचर के हैं।
- इस एक्साम्प्ल में प्राइवेट क्लास डाटा मेंबर अभी भी इनएक्सेसिबल बिहैवियर के बने रहते हैं।

