मान लीजिए हमारे पास तीन क्लास हैं: Vehicle, FourWheeler, और Car। Vehicle बेस क्लास है, FourWheeler इससे व्युत्पन्न है, और Car, FourWheeler से व्युत्पन्न है। Vehicle क्लास में 'vehicle' विधि है जो 'I am a vehicle' प्रिंट करती है, FourWheeler में 'fourWheeler' विधि है जो 'I have four wheels' प्रिंट करती है, और Car में 'car' विधि है जो 'I am a car' प्रिंट करती है। चूंकि यह बहु-स्तरीय विरासत है, हम Car ऑब्जेक्ट से अन्य सभी क्लास की विधियों तक पहुंच सकते हैं। हम Car ऑब्जेक्ट से सभी विधियों को कॉल करते हैं और संबंधित आउटपुट प्रिंट करते हैं।
यदि हम विधियों को इस क्रम में कॉल करते हैं: car(), fourWheeler(), vehicle(), तो आउटपुट होगा:
I am a car I have four wheels I am a vehicle
समाधान दृष्टिकोण
इस समस्या को हल करने के लिए हम निम्नलिखित चरणों का पालन करेंगे:
- Vehicle क्लास परिभाषित करें:
- vehicle() फंक्शन परिभाषित करें
- "I am a vehicle" प्रिंट करें
- vehicle() फंक्शन परिभाषित करें
- FourWheeler क्लास परिभाषित करें जो Vehicle से विरासत में मिली है:
- fourWheeler() फंक्शन परिभाषित करें
- "I have four wheels" प्रिंट करें
- fourWheeler() फंक्शन परिभाषित करें
- Car क्लास परिभाषित करें जो FourWheeler से विरासत में मिली है:
- car() फंक्शन परिभाषित करें
- "I am a car" प्रिंट करें
- car() फंक्शन परिभाषित करें
उदाहरण
बेहतर समझ के लिए निम्नलिखित कार्यान्वयन देखें:
#include <iostream> using namespace std; class Vehicle{ public: void vehicle(){ cout<<"I am a vehicle\n"; } }; class FourWheeler : public Vehicle{ public: void fourWheeler(){ cout<<"I have four wheels\n"; } }; class Car : public FourWheeler{ public: void car(){ cout<<"I am a car\n"; } }; int main(){ Car obj; obj.car(); obj.fourWheeler(); obj.vehicle(); return 0; }इनपुट
Car obj; obj.car(); obj.fourWheeler(); obj.vehicle();
आउटपुट
I am a car I have four wheels I am a vehicle