इनहेरिटेंस (विरासत)
इनहेरिटेंस से आप नई क्लास को मौजूदा क्लास के मेंबर्स इनहेरिट करने के लिए नामित कर सकते हैं। मौजूदा क्लास को बेस क्लास और नई क्लास को डेराइव्ड क्लास कहा जाता है। इनहेरिटेंस IS-A संबंध लागू करता है।
उदाहरण: Mammal IS-A Animal, Dog IS-A Mammal इसलिए Dog IS-A Animal।
बेस क्लास Shape के डेराइव्ड क्लास: Circle, Square, Rectangle।
कंपोजिशन (संरचना)
कंपोजिशन में, यदि पैरेंट ऑब्जेक्ट डिलीट हो जाता है, तो चाइल्ड ऑब्जेक्ट भी अपनी स्थिति खो देता है। कंपोजिशन एग्रीगेशन का विशेष प्रकार है और PART-OF संबंध देता है।
उदाहरण: Car HAS-A Engine। यदि कार नष्ट होती है, तो इंजन भी नष्ट हो जाता है।
कोड उदाहरण:
public class Engine {
// इंजन डिटेल्स
}
public class Car {
Engine eng = new Engine(); // कंपोजिशन - Car में Engine शामिल है
// ...
}
तुलना:
| पहलू | इनहेरिटेंस | कंपोजिशन |
|---|---|---|
| संबंध | IS-A | HAS-A / PART-OF |
| कपलिंग | टाइट (टाइटली कपल्ड) | लूज़ (लूज़ली कपल्ड) |
| लचीलापन | कम (कंपाइल टाइम) | अधिक (रनटाइम बदल सकते हैं) |
| कोड पुनर्उपयोग | विरासत के माध्यम से | डेलिगेशन के माध्यम से |
| लाइफटाइम | स्वतंत्र | चाइल्ड पैरेंट पर निर्भर |
सिद्धांत: "कंपोजिशन को इनहेरिटेंस पर प्राथमिकता दें" (Favor Composition over Inheritance) - जब तक IS-A संबंध स्पष्ट न हो।