कंपोजिशन एक डिज़ाइन तकनीक है जिसमें आपकी क्लास में दूसरी क्लास का इंस्टेंस आपकी क्लास के फील्ड के रूप में हो सकता है। इनहेरिटेंस एक मैकेनिज्म है जिसके तहत एक ऑब्जेक्ट क्लास को एक्सटेंड करके पैरेंट ऑब्जेक्ट के गुण और व्यवहार प्राप्त कर सकता है।
कंपोजिशन और इनहेरिटेंस दोनों क्लास को संबंधित करके कोड रीयूजेबिलिटी प्रदान करते हैं। जब आप कंपोजिशन का उपयोग करते हैं तो आप इनहेरिटेंस की कार्यक्षमता भी प्राप्त कर सकते हैं। नीचे अंतर दिए गए हैं।
| क्र. सं. | मुख्य बिंदु | इनहेरिटेंस | कंपोजिशन |
|---|---|---|---|
| 1 | बुनियादी | इनहेरिटेंस एक "is-a" रिलेशनशिप है | कंपोजिशन एक "has-a" रिलेशनशिप है |
| 2 | कोड रीयूज | इनहेरिटेंस में, एक क्लास केवल एक इंटरफेस को एक्सटेंड कर सकती है, इसलिए, आप अपने कोड को केवल एक क्लास में ही रीयूज कर सकते हैं | हम मल्टीपल क्लास में कोड रीयूज कर सकते हैं |
| 3 | स्कोप | इनहेरिटेंस अपनी सुविधाएं कंपाइल टाइम पर प्रदान करता है | कंपोजिशन रनटाइम पर आसानी से प्राप्त होता है |
| 4 | Final | हम final क्लास से कोड रीयूज नहीं कर सकते | यह final क्लास से भी कोड रीयूज की अनुमति देता है |
| 5 | मेथड | यह पैरेंट क्लास के पब्लिक और प्रोटेक्टेड दोनों मेथड को एक्सपोज करता है | यह एक्सपोज नहीं करता। वे पब्लिक इंटरफेस का उपयोग करके इंटरैक्ट करते हैं। |
इनहेरिटेंस का उदाहरण
class Animal{
String name="Orio";
}
class Dog extends Animal{
String type="Dog";
public static void main(String args[]){
Dog p = new Dog();
System.out.println("Name:" + p.name);
System.out.println("Type:" + p.type);
}
}
कंपोजिशन का उदाहरण
public class Student { }
public class College {
private Student student;
public College() {
this.student = new Student();
}
}