Vivasoft-logo

ইনহেরিট্যান্স

ইংলিশ শব্দ inheritance এর একটা বাংলা অর্থ হচ্ছে উত্তরাধিকার সূত্রে কিছু পাওয়া। অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং এ ক্লাস গুলোর মধ্যে কিছু ফাংশনালিটি ও বৈশিষ্ট্য শেয়ার করার একটা পদ্ধতি হচ্ছে ইনহেরিট্যান্স। অর্থাৎ, একটা ক্লাসকে ইনহেরিট (অনুসরণ) করে তার কিছু বৈশিষ্ট্য আরেকটি উত্তরসূরি ক্লাসের মধ্যে নিয়ে আসার ব্যাপারটিকেই ইনহেরিট্যান্স বলা হয়।

ডার্ট এ কোন ক্লাসকে ইনহেরিট করার জন্যে extend কিওয়ার্ড ব্যাবহার করা হয়।

class Car {
String manufacturerCompany;
String color;
int numberOfSeats;

Car(
this.manufacturerCompany,
this.color,
this.numberOfSeats,
);

set setColor(String color) => this.color;

String get getColor => this.color;

void printAllValuesInConsole() {
print('Color: $color');
print('Number Of Seats: $numberOfSeats');
}
}

class BmwCar extends Car {
String bmwModel;

BmwCar(
String manufacturerCompany,
String color,
int numberOfSeats,
this.bmwModel,
) : super(manufacturerCompany, color, numberOfSeats);

void printBMWCarProperties() {
print('Manufacturer Company: $manufacturerCompany');
print('Color: $color');
print('Number Of Seats: $numberOfSeats');
print('BMW Model: $bmwModel');
}
}

void main() {
BmwCar bmwCar = BmwCar(
'BMW',
'Black',
4,
'Electric Luxury Sedan',
);
bmwCar.printBMWCarProperties();
}
 

আউটপুট:

Manufacturer Company: BMW
Color: Black
Number Of Seats: 4
BMW Model: Electric Luxury Sedan
 

এখানে Car ক্লাসটিকে extend করে আমরা একটি নতুন ক্লাস তৈরি করলাম BmwCar , এই নতুন ক্লাসটিতে আমরা bmwModel ভ্যারিয়েবল টি যোগ করে আদতে BmwCar ক্লাসে নতুন একটি বৈশিষ্ট্য যোগ করলাম। BmwCar যেহেতু Car ক্লাসকে ইনহেরিট করেছে কাজেই এই ক্লাসটি এখন Car ক্লাসের সব বৈশিষ্ট্য এবং তার নিজের বৈশিষ্ট্য নিয়ে কাজ করবে।

ডার্ট মাল্টিপল ইনহেরিট্যান্স সাপোর্ট করে না , এর মানে হল একটা ক্লাস একের অধিক ক্লাসকে একসাথে ইনহেরিট করতে পারবেনা ।
সুপার কিওয়ার্ড: ডার্টে, সুপার কীওয়ার্ড ব্যবহার করা হয় প্যারেন্ট ক্লাসকে নির্দেশ করতে, প্যারেন্ট ক্লাসের মেথড এবং প্রপার্টি গুলোকে কল করতে হলে সুপার কীওয়ার্ড ব্যবহার করা হয় ।