खोज…
टिप्पणियों
नोट: मल्टी-लेवल इनहेरिटेंस जावा में अनुमत है, लेकिन मल्टीपल इनहेरिटेंस नहीं है। Http://beginnersbook.com/2013/04/oops-concepts/ पर अधिक जानकारी प्राप्त करें
वंशानुक्रम - परिभाषा
ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग (OOP) में इन्हेरिटेंस मुख्य अवधारणाओं में से एक है। वंशानुक्रम का उपयोग करके, हम एक समस्या को ठीक से मॉडल कर सकते हैं और हम लिखी जाने वाली लाइनों की संख्या को कम कर सकते हैं। आइए एक लोकप्रिय उदाहरण का उपयोग करके विरासत देखें।
विचार करें कि आपको ओओपी का उपयोग करके जानवरों के साम्राज्य (सरलीकृत पशु साम्राज्य, जीव विज्ञान, क्षमा करें) को मॉडल करना होगा। जानवरों की बहुत सारी प्रजातियां हैं, कुछ में अनोखी विशेषताएं हैं, जबकि कुछ में समान विशेषताएं हैं।
जानवरों के मुख्य परिवार हैं। मान लीजिए, Mammals , Reptiles ।
फिर हमारे पास उन परिवारों के बच्चे हैं। एक उदाहरण के लिए,
-
Cat,DogऔरLionस्तनधारी हैं। -
CobraऔरPythonसरीसृप हैं।
हर जानवर eat , drink , move जैसे कुछ बुनियादी सुविधाओं को साझा करता है। इसलिए हम कह सकते हैं कि हमारे पास एक माता-पिता हो सकते हैं जिन्हें Animal कहा जाता है, जिससे वे उन मूलभूत सुविधाओं को प्राप्त कर सकते हैं।
फिर वे परिवार भी कुछ सुविधाएँ साझा करते हैं। एक उदाहरण के लिए सरीसृप रेंगने का उपयोग करते हैं। हर स्तनधारी को जीवन के शुरुआती चरणों में fed milk जाता है।
फिर प्रत्येक जानवर के लिए कुछ अनूठी विशेषताएं हैं।
विचार करें कि क्या हम इन जानवरों की प्रजातियों को अलग से बनाने के लिए हैं। हमें हर पशु प्रजाति में बार-बार एक ही कोड लिखना होगा। इसके बजाय, हम विरासत का उपयोग करते हैं। हम निम्नानुसार पशु साम्राज्य को मॉडल कर सकते हैं:
- हमारे पास पेरेंट ऑब्जेक्ट
Animalकह सकते हैं, जिसमें सभी जानवरों की बुनियादी विशेषताएं हैं। -
MammalऔरReptile(निश्चित रूप से अन्य जानवरों के परिवार भी) माता-पिता की वस्तु,Animalसे बुनियादी सुविधाओं को विरासत में लेते समय अपनी सामान्य विशेषताओं के साथ वस्तुओं। - पशु प्रजातियों की वस्तुएं:
CatऔरDogMammalवस्तु से,CobraऔरPythonसेReptileवस्तु से विरासत में मिले हैं, इत्यादि।
इस रूप में हम अपने द्वारा लिखे गए कोड को कम कर सकते हैं, क्योंकि हमें प्रत्येक पशु प्रजातियों में जानवरों की बुनियादी विशेषताओं को परिभाषित करने की आवश्यकता नहीं है, क्योंकि हम उन्हें Animal वस्तु में परिभाषित कर सकते हैं और फिर उन्हें विरासत में प्राप्त कर सकते हैं। पशु परिवारों के साथ भी यही बात होती है।
वंशानुक्रम उदाहरण - नीचे दो वर्गों पर विचार करें
शिक्षक वर्ग:
class Teacher {
private String name;
private double salary;
private String subject;
public Teacher (String tname) {
name = tname;
}
public String getName() {
return name;
}
private double getSalary() {
return salary;
}
private String getSubject() {
return subject;
}
}
OfficeStaff वर्ग:
class OfficeStaff{
private String name;
private double salary;
private String dept;
public OfficeStaff (String sname) {
name = sname;
}
public String getName() {
return name;
}
private double getSalary() {
return salary;
}
private String getDept () {
return dept;
}
}
- दोनों वर्ग कुछ सामान्य गुणों और विधियों को साझा करते हैं। इस प्रकार कोड की पुनरावृत्ति।
- एक ऐसा वर्ग बनाना जिसमें सामान्य तरीके और गुण हों।
- शिक्षक और OfficeStaff कर्मचारी वर्ग के नीचे से सभी सामान्य गुणों और विधियों को प्राप्त कर सकते हैं।
कर्मचारी वर्ग:
class Employee{
private String name;
private double salary;
public Employee(String ename){
name=ename;
}
public String getName(){
return name;
}
private double getSalary(){
return salary;
}
}
- व्यक्तिगत विधियों और गुणों को इसमें जोड़ें एक बार जब हमने एक सुपर क्लास बनाई है जो वस्तुओं के एक सेट के लिए सामान्य विशेषताओं को परिभाषित करता है, तो इसका उपयोग किसी भी अधिक विशिष्ट उपवर्गों को बनाने के लिए किया जा सकता है
- इंजीनियर, प्रिंसिपल जैसे किसी भी वर्ग को कर्मचारी वर्ग से उपवर्ग के रूप में उत्पन्न किया जा सकता है।
- पैरेंट क्लास को सुपर क्लास कहा जाता है और विरासत में मिली क्लास सब क्लास होती है
- एक उप वर्ग एक सुपर क्लास का विशेष संस्करण है - यह सुपर क्लास द्वारा परिभाषित उदाहरण चर और विधियों के सभी को विरासत में मिलाता है और अपने स्वयं के, अद्वितीय तत्वों को जोड़ता है।
- हालांकि एक उप वर्ग में इसके सुपर क्लास के सभी सदस्य शामिल हैं लेकिन यह सुपर क्लास के उन सदस्यों तक नहीं पहुंच सकता है जिन्हें निजी घोषित किया गया है।
- सुपर क्लास के एक संदर्भ चर को उस सुपर क्लास से प्राप्त किसी भी उप वर्ग के संदर्भ में सौंपा जा सकता है, जो कि कर्मचारी साम्राज्य = नया शिक्षक ();