ইনহেরিটেন্স (Inheritance) হলো অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং (OOP) এর একটি গুরুত্বপূর্ণ বৈশিষ্ট্য, যা একটি নতুন ক্লাসকে বিদ্যমান ক্লাসের বৈশিষ্ট্য এবং আচরণ গ্রহণ করতে দেয়। অর্থাৎ, ইনহেরিটেন্সের মাধ্যমে একটি ক্লাস (চাইল্ড ক্লাস) অন্য একটি ক্লাসের (প্যারেন্ট ক্লাস) প্রোপার্টি এবং মেথডগুলোকে ব্যবহার করতে পারে। ইনহেরিটেন্স কোডের পুনরায় ব্যবহারযোগ্যতা এবং সংগঠিতভাবে কোড লেখা সহজ করে তোলে।
কেন ইনহেরিটেন্স ব্যবহার করা হয়?
- কোডের পুনরায় ব্যবহারযোগ্যতা: বিদ্যমান ক্লাসের কোড পুনরায় ব্যবহার করে নতুন ক্লাস তৈরি করা যায়।
- ডাটার সংগঠন: ইনহেরিটেন্স ব্যবহার করে সম্পর্কিত ডাটাকে সহজে সংগঠিত করা যায়।
- মডুলার এবং মেইনটেনেবল কোড: ইনহেরিটেন্স ব্যবহার করে কোডকে ছোট ছোট অংশে ভাগ করে রাখা যায়, ফলে কোডের মেইনটেনেন্স সহজ হয়।
- পলিমরফিজম (Polymorphism): ইনহেরিটেন্সের মাধ্যমে পলিমরফিজম বাস্তবায়ন করা যায়, যা একাধিক ক্লাসের জন্য একই মেথড ব্যবহার করতে সাহায্য করে।
ইনহেরিটেন্স কিভাবে কাজ করে?
Java-তে extends কীওয়ার্ড ব্যবহার করে ইনহেরিটেন্স করা হয়। ইনহেরিটেন্সে প্যারেন্ট ক্লাস বা সুপারক্লাসের বৈশিষ্ট্য ও মেথডগুলো চাইল্ড ক্লাস বা সাবক্লাসে ইনহেরিট হয়।
উদাহরণ:
// প্যারেন্ট ক্লাস
class Vehicle {
String color;
public void start() {
System.out.println("Vehicle is starting.");
}
}
// চাইল্ড ক্লাস
class Car extends Vehicle {
int speed;
public void accelerate() {
System.out.println("Car is accelerating.");
}
}
public class Main {
public static void main(String[] args) {
Car myCar = new Car();
// প্যারেন্ট ক্লাসের বৈশিষ্ট্য এবং মেথড ব্যবহার করা হচ্ছে
myCar.color = "Red";
myCar.start(); // আউটপুট: Vehicle is starting.
// চাইল্ড ক্লাসের বৈশিষ্ট্য এবং মেথড ব্যবহার করা হচ্ছে
myCar.speed = 120;
myCar.accelerate(); // আউটপুট: Car is accelerating.
System.out.println("Car color: " + myCar.color);
System.out.println("Car speed: " + myCar.speed);
}
}
আউটপুট:
Vehicle is starting.
Car is accelerating.
Car color: Red
Car speed: 120
ব্যাখ্যা:
Vehicleহলো প্যারেন্ট ক্লাস, যার মধ্যেcolorবৈশিষ্ট্য এবংstart()মেথড রয়েছে।Carহলো চাইল্ড ক্লাস, যাVehicleক্লাসকে ইনহেরিট করছে। এর ফলেCarক্লাসVehicleএর বৈশিষ্ট্য ও মেথডগুলো পেয়েছে এবং নিজস্বspeedবৈশিষ্ট্য এবংaccelerate()মেথড যুক্ত করেছে।
ইনহেরিটেন্সের প্রকারভেদ
সিঙ্গেল ইনহেরিটেন্স (Single Inheritance): যেখানে একটি চাইল্ড ক্লাস একটি মাত্র প্যারেন্ট ক্লাস থেকে ইনহেরিট করে।
class A { ... }
class B extends A { ... }
মাল্টিলেভেল ইনহেরিটেন্স (Multilevel Inheritance): যেখানে একটি চাইল্ড ক্লাস একটি প্যারেন্ট ক্লাস থেকে ইনহেরিট করে এবং সেই প্যারেন্ট ক্লাস অন্য একটি ক্লাস থেকে ইনহেরিট করে।
class A { ... }
class B extends A { ... }
class C extends B { ... }
হায়ারারকিকাল ইনহেরিটেন্স (Hierarchical Inheritance): যেখানে একাধিক চাইল্ড ক্লাস একটি প্যারেন্ট ক্লাস থেকে ইনহেরিট করে।
class A { ... }
class B extends A { ... }
class C extends A { ... }
নোট: Java তে মাল্টিপল ইনহেরিটেন্স সরাসরি সমর্থিত নয়, অর্থাৎ একটি ক্লাস একাধিক প্যারেন্ট ক্লাস থেকে সরাসরি ইনহেরিট করতে পারে না। তবে, ইন্টারফেস ব্যবহার করে মাল্টিপল ইনহেরিটেন্সের সুবিধা পাওয়া যায়।
সুপার কীওয়ার্ড ব্যবহার
ইনহেরিটেড ক্লাসের মেথড বা কন্সট্রাক্টরের ক্ষেত্রে প্যারেন্ট ক্লাসের মেথডকে কল করতে super কীওয়ার্ড ব্যবহার করা হয়।
উদাহরণ:
class Animal {
public void sound() {
System.out.println("Animal sound");
}
}
class Dog extends Animal {
public void sound() {
super.sound(); // প্যারেন্ট ক্লাসের sound() মেথড কল করা
System.out.println("Dog barks");
}
}
public class Main {
public static void main(String[] args) {
Dog dog = new Dog();
dog.sound();
}
}
আউটপুট:
Copy code
Animal sound
Dog barks
ব্যাখ্যা: Dog ক্লাস sound() মেথডটি ওভাররাইড করেছে, তবে super.sound() দিয়ে Animal ক্লাসের sound() মেথডকেও কল করেছে।
ওভাররাইডিং (Overriding)
ইনহেরিটেন্সে চাইল্ড ক্লাস প্যারেন্ট ক্লাসের মেথডকে ওভাররাইড করতে পারে, অর্থাৎ একই নামে আবার মেথড সংজ্ঞায়িত করতে পারে। এতে চাইল্ড ক্লাস নিজের মতো করে মেথডটি ব্যবহার করতে পারে।
class Animal {
public void sound() {
System.out.println("Animal sound");
}
}
class Cat extends Animal {
@Override
public void sound() {
System.out.println("Cat meows");
}
}
ব্যাখ্যা: এখানে sound() মেথড Animal এবং Cat উভয় ক্লাসে রয়েছে, তবে Cat ক্লাসে sound() মেথড ওভাররাইড করা হয়েছে।
ইনহেরিটেন্সের সুবিধা
- কোড পুনরায় ব্যবহার: প্যারেন্ট ক্লাসের বৈশিষ্ট্য ও মেথডগুলো চাইল্ড ক্লাসে ব্যবহার করে কোড পুনরায় ব্যবহার নিশ্চিত হয়।
- মডুলার কোড: ইনহেরিটেন্স ব্যবহার করে জটিল কোডকে মডুলার করা যায়।
- সহজে পরিবর্তন: প্যারেন্ট ক্লাসে কোনো পরিবর্তন করলে চাইল্ড ক্লাসেও তার প্রভাব পড়ে, ফলে কোড মেইনটেন করা সহজ হয়।
সারসংক্ষেপ
- ইনহেরিটেন্স একটি চাইল্ড ক্লাসকে প্যারেন্ট ক্লাসের বৈশিষ্ট্য এবং মেথড ইনহেরিট করতে দেয়।
- ইনহেরিটেন্স কোডের পুনরায় ব্যবহারযোগ্যতা, মডুলারিটি, এবং সহজবোধ্যতা বৃদ্ধি করে।
- Java-তে
extendsকীওয়ার্ড ব্যবহার করে ইনহেরিটেন্স করা হয় এবংsuperকীওয়ার্ড প্যারেন্ট ক্লাসের মেথড বা কন্সট্রাক্টর অ্যাক্সেস করতে ব্যবহৃত হয়।
ইনহেরিটেন্স ব্যবহার করে প্রোগ্রামিং আরও সংগঠিত, পুনরায় ব্যবহারযোগ্য এবং স্থিতিশীল রাখা যায়।
Read more