Public Inheritance: हम जानते हैं कि विभिन्न प्रकार के Access Specifier किस प्रकार से Base Class के Data के Access को Control करने के लिए Use किए जाते हैं। चलिए, अब हम इन Access Specifier के उपयोग के उन विभिन्न तरीकों को देखते हैं, जिनके द्वारा Classes Inherit होती हैं। Inheritance में हमने अक्सर public Access Specifier का प्रयोग किया हैं। जैसे:
class Alpha { }; class Beta : public Alpha { };
इस तरीके से किसी Class को Inherit करने के तरीके को Public Inheritance या Public Derivation कहते हैं। इस प्रकार के Inheritance में Derived Class का Object Base Class के public Members को Access कर सकता है। Public Inheritance में हम कहते हैं कि Beta Class का कोई Object एक प्रकार का Alpha Class का Object होता है। यानी:
Object of the Class B is a “Kind Of” Object of the Class A.
इस प्रकार के Derived Class में उसकी Base Class के तो सभी Features होते ही हैं साथ ही उस Derived Class के स्वयं के भी कुछ Features हो सकते हैं। Compiler Public Inheritance के “Kind Of” Relationship को बहुत गंभीरता से लेता है। ये Inheritance हमें ये सुविधा देता है कि हम उन सभी Situations में, जहां पर Base Class के Object की जरूरत होती है, इस Public Inheritance के Derived Class Object को Use कर सकते हैं क्योंकि ये Derived Class Object Base Class Object के प्रकार (Kind Of) का ही होता है। यानी:
Derived Class is a “Kind Of” Base Class
के सिद्धांत के कारण हमें जहां भी Base Class के Object की जरूरत होती है, Public Inheritance के कारण हम Derived Class Object को Use कर सकते हैं। इसे समझने के लिए निम्न Program देखिए:
// a derived class object is a kind of base class object class alpha // base class { public: void memFunction() // public member function { } }; class beta : public alpha // derived class { }; void main() { void anyFunction(alpha); // declaration; takes alpha argument alpha alphaObject; // object of type alpha beta betaObject; // object of type beta alphaObject = betaObject; // beta object assigned to alpha variable anyfunction(betaObject); // beta object passed as alpha argument }
जैसा कि हम जानते हैं कि एक Derived Class का Object Base Class के Member Function को तब तक Call कर सकता है, जब तक कि Member Function public हो। यानी:
betaObject.memFunction();
लेकिन हम देख सकते हैं कि हम Derive Class के एक Object को Base Class के एक Variable में Assign कर सकते हैं। यानी-
alphaObject = betaObject;
Compiler को इस Statement को Execute करने में कोई परेशानी नहीं है, क्योंकि betaObject alpha प्रकार का है। इसी तरह से हम किसी ऐसे Function में Argument के रूप में beta Class के Object को Pass कर सकते हैं, जिसे Argument के रूप में alpha Class का Object चाहिए। जैसे:
AnyFunction(betaObject);
हालांकि हम
alphaObject = betaObject ;
तो कर सकते हैं लेकिन
betaObject = alphaObject;
नहीं कर सकते हैं। क्योंकि alphaObject betaObject के प्रकार का नहीं है। यानी:
alphaObject is not a “Kind Of” betaObject
ये Article इस वेबसाईट पर Selling हेतु उपलब्ध EBook C++ Programming Language in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी रहा, तो निश्चित रूप से ये पुस्तक भी आपके लिए काफी उपयोगी साबित होगी।
C++ Programming Language in Hindi | Page: 666 | Format: PDF