विरासत (Inheritance) ले एक क्लास (सबक्लास वा बाल क्लास) को अर्को क्लास (सुपरक्लास वा अभिभावक क्लास) का क्षेत्र र विधिहरू पुनः प्रयोग र विस्तार गर्न दिन्छ। यो एक is-a सम्बन्ध मडेल गर्दछ: Dog एक Animal हो।
विरासत (Inheritance) ले एक क्लास (सबक्लास वा बाल क्लास) को अर्को क्लास (सुपरक्लास वा अभिभावक क्लास) का क्षेत्र र विधिहरू पुनः प्रयोग र विस्तार गर्न दिन्छ। यो एक 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 थप गर्यो। सबक्लास ले विरासत प्राप्त विधिहरू override गरी आचरण परिवर्तन गर्न सक्दछ।
| लाभ | जोखिम |
|---|---|
| साझा कोड पुनः प्रयोग गर्नुहोस् | अभिभावकको सँग कडा संयोजन |
| वास्तविक पदानुक्रमहरू मডेल गर्नुहोस् | नाजुक आधार वर्ग — अभिभावक परिवर्तनहरू बालहरू तोड्छन् |
| साधारण प्रकारको माध्यमबाट बहुरूपता | गहिरो रूखहरू पछ्याउन गाह्रो हुन्छन् |
एक साधारण दिशानिर्देश: जब सम्बन्ध वास्तवमा "has-a" हो, "is-a" होइन, तब composition लाई inheritance मा वरीयता दिनुहोस्।
विरासत सबैभन्दा गलत प्रयोग गरिएको OOP सुविधा हो: यो केवल कोड साझा गर्न प्रयोग गर्न लोभनीय हुन्छ, जसले सम्बन्धविहीन क्लासहरूलाई जोडिन्छ।
सहीसँग प्रयोग गरिएको — केवल सत्य is-a सम्बन्धहरूको लागि — यो आपलाई पुनः प्रयोग र बहुरूपता दिन्छ, जसले तपाईंलाई धेरै सबटाइपहरूलाई समान रूपमा तिनीहरूको साझा अभिभावकको माध्यमबाट व्यवहार गर्न दिन्छ।
विस्तृत उत्तरसहित IT अन्तर्वार्ता प्रश्नहरूको पुस्तकालय — जुनियरदेखि सिनियरसम्म।
दान गर्नुहोस्