ইনহেরিট্যান্স (Inheritance) হল অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং (OOP) এর একটি মৌলিক ধারণা, যার মাধ্যমে একটি নতুন ক্লাস (সাবক্লাস) একটি পুরনো ক্লাস (পারেন্ট ক্লাস বা সুপার ক্লাস) থেকে বৈশিষ্ট্য (প্রপার্টি) এবং আচরণ (মেথড) উত্তরাধিকারসূত্রে লাভ করে। এটি কোড পুনঃব্যবহারযোগ্যতা নিশ্চিত করতে এবং কোডের মডুলারিটি বৃদ্ধি করতে সহায়তা করে।
ইনহেরিট্যান্সের মাধ্যমে, আপনি একবার একটি ক্লাস ডিফাইন করতে পারেন এবং সেই ক্লাসের বৈশিষ্ট্য এবং আচরণকে অন্যান্য ক্লাসে ব্যবহার করতে পারেন, যা কোড লিখতে সময় এবং প্রচেষ্টা কমিয়ে দেয়।
ইনহেরিট্যান্সের প্রধান বৈশিষ্ট্য:
- ক্লাসের উত্তরাধিকার: একটি সাবক্লাস তার সুপার ক্লাস থেকে প্রপার্টি এবং মেথড অনুসরণ (inherit) করতে পারে। এর মাধ্যমে ক্লাসের মধ্যে সম্পর্ক তৈরি হয়।
- কোড পুনঃব্যবহারযোগ্যতা: একবার সুপার ক্লাসে কোড লিখে ফেললে, সেই কোডকে নতুন ক্লাসে ব্যবহার করা সম্ভব হয়। এটি কোডের পুনঃব্যবহারযোগ্যতা নিশ্চিত করে।
- পলিমরফিজম (Polymorphism): ইনহেরিট্যান্স পলিমরফিজমের সাথে সম্পর্কিত। এক ধরনের অবজেক্টকে বিভিন্নভাবে আচরণ করতে দেওয়া হয়। এটি মেথড ওভাররাইডিং (Method Overriding) এবং মেথড ওভারলোডিং (Method Overloading) এর মাধ্যমে সম্ভব হয়।
- সহজ maintenance: কোডের পরিবর্তন বা রক্ষণাবেক্ষণ সহজ হয়, কারণ যখন সুপার ক্লাসে কোনো পরিবর্তন আনা হয়, তখন সব সাবক্লাস তা অটোমেটিকভাবে গ্রহণ করে।
ইনহেরিট্যান্সের ধরণ:
- একক ইনহেরিট্যান্স (Single Inheritance): যখন একটি সাবক্লাস শুধুমাত্র একটি সুপার ক্লাস থেকে বৈশিষ্ট্য এবং আচরণ গ্রহণ করে।
- বহু ইনহেরিট্যান্স (Multiple Inheritance): যখন একটি সাবক্লাস একাধিক সুপার ক্লাস থেকে বৈশিষ্ট্য এবং আচরণ গ্রহণ করে। (এইটি কিছু ভাষায় সমর্থিত নয়, যেমন: Objective-C, Java)
- মাল্টিলেভেল ইনহেরিট্যান্স (Multilevel Inheritance): যখন একটি ক্লাস একটি সুপার ক্লাস থেকে ইনহেরিট করে এবং সেই সাবক্লাস অন্য একটি ক্লাস থেকে ইনহেরিট করে।
- হায়ারারকিক্যাল ইনহেরিট্যান্স (Hierarchical Inheritance): একাধিক সাবক্লাস একটি সুপার ক্লাস থেকে ইনহেরিট করে।
উদাহরণ: ইনহেরিট্যান্সের প্রাথমিক ব্যবহার
ধরা যাক, আমাদের একটি Animal নামক সুপার ক্লাস আছে, এবং আমরা এর থেকে কিছু নতুন ক্লাস তৈরি করতে চাই, যেমন Dog এবং **Cat**। এখানে Dog এবং Cat ক্লাস দুটি Animal ক্লাস থেকে ইনহেরিট করবে।
উদাহরণ: Objective-C তে ইনহেরিট্যান্স
// সুপার ক্লাস: Animal
@interface Animal : NSObject
@property NSString *name;
- (void) eat; // সুপার ক্লাসের মেথড
@end
@implementation Animal
- (void) eat {
NSLog(@"%@ is eating", self.name);
}
@end
// সাবক্লাস: Dog
@interface Dog : Animal
- (void) bark; // Dog ক্লাসের নিজস্ব মেথড
@end
@implementation Dog
- (void) bark {
NSLog(@"%@ is barking", self.name);
}
@end
int main() {
@autoreleasepool {
// Dog ক্লাসের অবজেক্ট তৈরি
Dog *myDog = [[Dog alloc] init];
myDog.name = @"Buddy"; // প্রপার্টি অ্যাসাইন
[myDog eat]; // ইনহেরিট করা eat মেথড কল
[myDog bark]; // Dog ক্লাসের নিজস্ব মেথড কল
}
return 0;
}ব্যাখ্যা:
- Animal ক্লাস হল সুপার ক্লাস, যার একটি প্রপার্টি
nameএবং একটি মেথডeatরয়েছে। - Dog ক্লাস হল সাবক্লাস, যা
Animalক্লাস থেকে ইনহেরিট করেছে এবং একটি নতুন মেথডbarkযোগ করেছে। - Dog ক্লাসের অবজেক্ট তৈরি করার পর, এটি
Animalক্লাসেরeatমেথডও কল করতে পারে, কারণ এটি ইনহেরিট করেছে।
এখানে Dog ক্লাস Animal ক্লাস থেকে তার eat মেথড ইনহেরিট করেছে এবং তার নিজস্ব bark মেথড যোগ করেছে।
ইনহেরিট্যান্সের উপকারিতা
- কোড পুনঃব্যবহার: একটি কোডবেস একাধিক ক্লাসে ব্যবহৃত হতে পারে, ফলে পুনরায় একই কোড না লিখে নতুন ফিচার যোগ করা যায়।
- এনক্যাপসুলেশন: ইনহেরিট্যান্সে, একটি সাবক্লাস সুপার ক্লাসের প্রাইভেট ডেটা ও মেথড ব্যবহার করতে পারে, কিন্তু অন্য ক্লাস থেকে তা এক্সেস করা সম্ভব হয় না।
- বিস্তারযোগ্যতা: নতুন ক্লাস যোগ করার সময় পুরনো ক্লাসগুলোর মধ্যে কোনো পরিবর্তন না এনে নতুন বৈশিষ্ট্য যোগ করা যায়।
সারাংশ
ইনহেরিট্যান্স একটি শক্তিশালী প্রোগ্রামিং কনসেপ্ট যা একটি নতুন ক্লাসকে পুরনো ক্লাস থেকে বৈশিষ্ট্য এবং আচরণ গ্রহণ করতে সক্ষম করে। এটি কোডের পুনঃব্যবহারযোগ্যতা, মডুলারিটি, এবং রক্ষণাবেক্ষণ সহজ করে। ইনহেরিট্যান্সের মাধ্যমে একটি ক্লাস তার সুপার ক্লাসের বৈশিষ্ট্য ও আচরণ ধারণ করতে পারে এবং তার নিজস্ব নতুন বৈশিষ্ট্য যোগ করতে পারে, যা অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিংয়ের একটি গুরুত্বপূর্ণ অংশ।
Read more