1. व्हेल और गाय
यहाँ एक दिलचस्प प्राणी तथ्य है: एक गाय एक व्हेल के बहुत करीब है, उदाहरण के लिए, एक दरियाई घोड़े के लिए। यह पता चला है कि गाय और व्हेल अपेक्षाकृत करीबी रिश्तेदार हैं।
यहाँ देखो। आइए आपको बहुरूपता के बारे में बताते हैं — OOP का एक और बहुत शक्तिशाली उपकरण । इसकी चार विशेषताएं हैं।
2. वंशानुक्रम रामबाण नहीं है
कल्पना कीजिए कि आपने Cow
एक खेल के लिए एक कक्षा लिखी है। इसके कई क्षेत्र और विधियाँ हैं। इस वर्ग की वस्तुएँ विभिन्न कार्य कर सकती हैं: चलना, खाना और सोना। गाय एक घंटी भी पहनती हैं जो चलने पर बजती है। मान लीजिए कि आपने कक्षा में सब कुछ सबसे छोटे विस्तार से लागू कर दिया है।
और फिर आपकी मुवक्किल आती है और कहती है कि वह एक नया खेल स्तर जारी करना चाहती है, जिसमें सारी कार्रवाई समुद्र में होती है, और मुख्य पात्र एक व्हेल है।
आप एक क्लास डिजाइन करना शुरू करते हैं और महसूस करते हैं कि यह क्लास Whale
से थोड़ा ही अलग है । Cow
दोनों वर्गों का तर्क बहुत समान है और आप वंशानुक्रम का उपयोग करने का निर्णय लेते हैं।
वर्ग Cow
मूल वर्ग की भूमिका निभाने के लिए आदर्श है: इसमें सभी आवश्यक चर और विधियाँ हैं। हमें बस इतना करना है कि व्हेल को तैरने की क्षमता दें। लेकिन एक समस्या है: आपकी व्हेल के पैर, सींग और एक घंटी है। आखिरकार, यह कार्यक्षमता Cow
कक्षा के अंदर लागू की जाती है। यहाँ क्या किया जा सकता है?
3. ओवरराइडिंग विधि
ओवरराइडिंग विधि हमारे बचाव में आती है। यदि हमें एक ऐसी विधि विरासत में मिली है जो हमारी नई कक्षा में वह नहीं करती है जो हम चाहते हैं, तो हम उस विधि को दूसरे के साथ बदल सकते हैं।
यह कैसे किया जाता है? हमारे वंशज वर्ग में, हम उसी विधि को मूल वर्ग की विधि के रूप में घोषित करते हैं जिसे हम ओवरराइड करना चाहते हैं। हम इसमें अपना नया कोड लिखते हैं। और बस हो गया — ऐसा लगता है जैसे पैरेंट क्लास में पुरानी पद्धति मौजूद ही नहीं है।
इस तरह से ये कार्य करता है:
कोड | विवरण |
---|---|
|
|
|
यह कोड स्क्रीन पर निम्न पाठ प्रदर्शित करता है:
|
|
यह कोड स्क्रीन पर निम्न प्रदर्शित करता है:
|
Cow
वर्ग को इनहेरिट करने और विधि को ओवरराइड करने के बाद printName
, Whale
कक्षा में वास्तव में निम्नलिखित डेटा और विधियाँ होती हैं:
|
हम किसी पुराने तरीके के बारे में नहीं जानते। |
GO TO FULL VERSION