वारसा एका वर्गाला (उपवर्ग किंवा संतति) दुसर्या वर्गाच्या (अधिवर्ग किंवा पालक) फील्ड आणि पद्धती पुन्हा वापरण्याची आणि विस्तारण्याची परवानगी देतो. हे is-a संबंध दर्शवितो: Dog हा Animal .
वारसा एका वर्गाला (उपवर्ग किंवा संतति) दुसर्या वर्गाच्या (अधिवर्ग किंवा पालक) फील्ड आणि पद्धती पुन्हा वापरण्याची आणि विस्तारण्याची परवानगी देतो. हे is-a संबंध दर्शवितो: Dog हा Animal .
class Animal:
def __init__(self, name):
self.name = name
def eat(self):
return f"{self.name} is eating"
class Dog(Animal): # Dog inherits everything from Animal
def bark(self): # ...and adds new behavior
return "Woof!"
d = Dog("Rex")
print(d.eat()) # "Rex is eating" → inherited, not rewritten
print(d.bark()) # "Woof!" → Dog-specific
Dog ला __init__ आणि eat विनामूल्य मिळाले आणि bark जोडले. उपवर्ग देखील वारसाप्राप्त पद्धती ओव्हरराइड करून वर्तन बदलू शकतो.
| लाभ | जोखिम |
|---|---|
| सामायिक कोड पुन्हा वापर करा | पालक वर्गाला घट्ट जोडणी |
| वास्तविक श्रेणिक्रम दर्शवा | नाजूक मूळ वर्ग — पालक बदल मुले तोडतात |
| सामान्य प्रकारद्वारे बहुरूपता | गहरे झाड अनुसरण करणे कठीण होते |
सामान्य मार्गदर्शन: जेव्हा संबंध खरोखर "has-a" असेल तेव्हा वारसापेक्षा रचनेचे पक्ष घ्या.
वारसा सर्वात गैरवापरलेले OOP वैशिष्ट्य आहे: कोड सामायिक करण्यासाठी फक्त त्याचा वापर करणे लोभसपणे आहे, जे असंबंधित वर्गांना जोडते.
सत्यरूपे वापरल्यावर — केवळ खर्या is-a संबंधांसाठी — हे आपल्याला पुन्हा वापर आणि बहुरूपता देते, ज्यामुळे आप आपल्या सामान्य पालक वर्गाद्वारे अनेक सबटाइप एकसारखे हाताळू शकता.