"हॅलो, अमिगो! आम्ही शेवटी खरोखरच एका मनोरंजक गोष्टीकडे आलो आहोत. आज मी तुम्हाला एकाधिक वारसांबद्दल सांगणार आहे . एकापेक्षा जास्त वारसा हे खरोखरच एक अतिशय आकर्षक आणि शक्तिशाली साधन आहे. आणि जर ते अनेक समस्या नसतील तर Java. वर्गांच्या एकाधिक वारशाचे समर्थन करेल. परंतु तसे होत नाही, म्हणून आम्ही इंटरफेसच्या एकाधिक वारशात समाधानी असले पाहिजे . जे खूप छान आहे."

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

कल्पना करा की तुम्ही कॉम्प्युटर गेम लिहित आहात. आणि त्यातील वर्ण (तुमच्या वस्तू) अतिशय गुंतागुंतीच्या मार्गांनी वागले पाहिजेत: नकाशावर फिरणे, वस्तू गोळा करणे, शोध घेणे, इतर पात्रांशी संवाद साधणे, एखाद्याला मारणे, दुसऱ्याला वाचवणे. समजा तुम्ही सर्व वस्तूंना 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) तो एखाद्याला खाऊ शकतो

फक्त या तीन भूमिका (इंटरफेस) जाणून घेतल्यास, तुम्ही एक प्रोग्राम लिहू शकता आणि या भूमिकांमधील योग्य परस्परसंवादाचे वर्णन करू शकता. उदाहरणार्थ, एखादी वस्तू "तुम्ही खाऊ शकता" चा पाठलाग करेल (मूव्हेबल इंटरफेसद्वारे) आणि "जो तुम्हाला खाऊ शकतो" पासून पळून जाईल. आणि हे सर्व विशिष्ट वस्तूंबद्दल जाणून घेतल्याशिवाय. जर तुम्ही प्रोग्राममध्ये अधिक ऑब्जेक्ट्स (वर्ग) जोडल्या आणि या भूमिका ठेवल्या, तरीही ते आपल्या ऑब्जेक्ट्सच्या वर्तनावर नियंत्रण ठेवत सुंदरपणे कार्य करेल.