ইনহেরিট্যান্স একটি ক্লাসকে (সাবক্লাস বা ) অন্য একটি ক্লাসের ( বা ) ফিল্ড এবং মেথড পুনর্ব্যবহার এবং প্রসারিত করতে দেয়। এটি একটি সম্পর্ক মডেল করে: একটি ।
ইনহেরিট্যান্স একটি ক্লাসকে (সাবক্লাস বা ) অন্য একটি ক্লাসের ( বা ) ফিল্ড এবং মেথড পুনর্ব্যবহার এবং প্রসারিত করতে দেয়। এটি একটি সম্পর্ক মডেল করে: একটি ।
DogAnimalclass 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" হয়, "is-a" নয়, তখন রচনার উপর উত্তরাধিকার পছন্দ করুন।
ইনহেরিট্যান্স সবচেয়ে বেশি অপব্যবহৃত OOP বৈশিষ্ট্য: শুধুমাত্র কোড শেয়ার করার জন্য এটি ব্যবহার করার প্রলোভন থাকে, যা সম্পর্কহীন ক্লাসকে সংযুক্ত করে।
সঠিকভাবে ব্যবহার করা হলে — শুধুমাত্র প্রকৃত is-a সম্পর্কের জন্য — এটি আপনাকে পুনর্ব্যবহার এবং পলিমরফিজম প্রদান করে, যা আপনাকে তাদের সাধারণ প্যারেন্টের মাধ্যমে অনেক সাবটাইপকে একইভাবে বিবেচনা করতে দেয়।