"नमस्कार, अमीगो! आखिरकार हम वास्तव में दिलचस्प चीज पर आए हैं। आज मैं आपको मल्टीपल इनहेरिटेंस के बारे में बताने जा रहा हूं । मल्टीपल इनहेरिटेंस वास्तव में एक बहुत ही आकर्षक और शक्तिशाली उपकरण है। और अगर यह कई समस्याओं के लिए नहीं थे, तो जावा कक्षाओं के एकाधिक विरासत का समर्थन करेगा। लेकिन ऐसा नहीं है, इसलिए हमें इंटरफेस के एकाधिक विरासत के साथ संतुष्ट होना चाहिए । जो भी बहुत बढ़िया है। "

एकाधिक इंटरफेस इनहेरिट करना - 1

कल्पना कीजिए कि आप एक कंप्यूटर गेम लिख रहे हैं। और इसके पात्रों (आपकी वस्तुओं) को बहुत ही जटिल तरीके से व्यवहार करना चाहिए: एक नक्शे के बारे में चलना, वस्तुओं को इकट्ठा करना, अन्वेषण करना, अन्य पात्रों के साथ संवाद करना, किसी को मारना, किसी और को बचाना। मान लीजिए कि आप सभी वस्तुओं को 20 श्रेणियों में विभाजित करने में सक्षम हैं। इसका मतलब है कि, यदि आप भाग्यशाली हैं, तो आप अपनी वस्तुओं को परिभाषित करने के लिए केवल 20 कक्षाओं के साथ काम कर पाएंगे। लेकिन यहाँ पकड़ है: इन वस्तुओं के कितने अनूठे रूप होंगे? प्रत्येक प्रकार के ऑब्जेक्ट में 20 अन्य प्रकार के ऑब्जेक्ट के साथ अद्वितीय इंटरैक्शन हो सकते हैं (हम उसी प्रकार के ऑब्जेक्ट के साथ इंटरैक्शन भी गिन रहे हैं)। दूसरे शब्दों में, आपको 20 x 20 = 400 इंटरैक्शन के लिए कोड लिखना होगा! और यदि अद्वितीय वस्तु प्रकारों की संख्या 20 नहीं, बल्कि 100 है, तो अंतःक्रियाओं की संख्या 10,000 हो सकती है!

"वाह! अब मुझे समझ में आया कि प्रोग्रामिंग इतना मुश्किल काम क्यों है।"

"यह आसान है। बहुत सारे सार के लिए धन्यवाद। और इंटरफेस के एकाधिक विरासत के लिए कोई छोटा धन्यवाद नहीं।"

यदि भूमिकाएँ और/या योग्यताएँ स्वयं वस्तुओं के बजाय परस्पर क्रिया करती हैं, तो हम अक्सर वस्तु की अंतःक्रिया को सरल बना सकते हैं। और जैसा कि हम पहले से ही जानते हैं, क्षमताओं को आसानी से एक वर्ग में जोड़ा जा सकता है जब यह कुछ इंटरफ़ेस लागू करता है।

एक बड़ा प्रोग्राम लिखते समय, डेवलपर्स आमतौर पर शुरुआत से ही ऐसा करते हैं:

1) सभी क्षमताओं/भूमिकाओं की पहचान करें।

2) इन भूमिकाओं के बीच अंतःक्रिया को परिभाषित करें।

3) फिर बस सभी वर्गों को भूमिकाएँ सौंपें।

"शायद एक उदाहरण?"

"बिल्कुल। आइए कार्टून «टॉम एंड जेरी» में भूमिकाओं को देखें।"

जावा कोड विवरण
interface Moveable
{}
- भूमिका/चलने की क्षमता।
interface Eatable
{}
- खाने की भूमिका/क्षमता।
interface Eat
{}
- किसी को खाने की भूमिका/क्षमता।
class Tom extends Cat implements Moveable, Eatable, Eat
{}
टॉम एक बिल्ली है जिसकी तीन भूमिकाएँ हैं:
1) वह चल सकता है
2) वह किसी को खा सकता है
3) उसे कोई (एक कुत्ता) खा सकता है
class Jerry extends Mouse implements Moveable, Eatable
{}
जेरी एक चूहा है जिसकी दो भूमिकाएँ हैं:
1) वह चल सकता है
2) वह किसी के द्वारा खाया जा सकता है
class Killer extends Dog implements Moveable, Eat
{}
हत्यारा एक कुत्ता है जिसकी दो भूमिकाएँ हैं: 1) वह चल सकता है 2) वह किसी को खा सकता है

केवल इन तीन भूमिकाओं (इंटरफेस) को जानने के बाद, आप एक प्रोग्राम लिख सकते हैं और इन भूमिकाओं के बीच की सही बातचीत का वर्णन कर सकते हैं। उदाहरण के लिए, एक वस्तु (जंगम इंटरफ़ेस के माध्यम से) "एक जिसे आप खा सकते हैं" के बाद पीछा करेंगे और "वह जो आपको खा सकता है" से दूर भाग जाएगा। और यह सब विशिष्ट वस्तुओं के बारे में जाने बिना। यदि आप प्रोग्राम में अधिक ऑब्जेक्ट्स (कक्षाएं) जोड़ते हैं और इन भूमिकाओं को रखते हैं, तो यह अभी भी आपकी वस्तुओं के व्यवहार को नियंत्रित करते हुए खूबसूरती से काम करेगा।