পলিমরফিজম (Polymorphism) হলো একই টাস্ক একাধিকভাবে করার ক্ষমতা। জাভায় দুই ধরনের পলিমরফিজম রয়েছে:
- কম্পাইল-টাইম পলিমরফিজম (Static Binding): মেথড ওভারলোডিং (Method Overloading)। বাইন্ডিং কম্পাইল টাইমে হয়। ইনহেরিট্যান্স প্রয়োজন নেই।
- রান-টাইম পলিমরফিজম (Dynamic Binding): মেথড ওভাররাইডিং (Method Overriding)। বাইন্ডিং রান টাইমে হয়। ইনহেরিট্যান্স প্রয়োজন।
| ক্র. নং | বিষয় | কম্পাইল-টাইম | রান-টাইম |
|---|---|---|---|
| ১ | বাইন্ডিং | স্ট্যাটিক (কম্পাইল টাইম) | ডাইনামিক (রান টাইম) |
| ২ | ইনহেরিট্যান্স | প্রয়োজন নেই | প্রয়োজন |
| ৩ | উদাহরণ | মেথড ওভারলোডিং | মেথড ওভাররাইডিং |
কম্পাইল-টাইম উদাহরণ (ওভারলোডিং)
class CompileTimePoly {
void display() { System.out.println("প্যারামিটার ছাড়া"); }
void display(String val) { System.out.println("প্যারামিটারসহ: " + val); }
}
public class Main {
public static void main(String[] args) {
CompileTimePoly obj = new CompileTimePoly();
obj.display();
obj.display("Polymorphism");
}
}
রান-টাইম উদাহরণ (ওভাররাইডিং)
class Parent {
public void display() { System.out.println("Parent: Overridden Method"); }
}
class Child extends Parent {
@Override
public void display() { System.out.println("Child: Overriding Method"); }
}
public class Main {
public static void main(String[] args) {
Parent obj = new Child(); // আপকাস্টিং
obj.display(); // Child-র display() কল হবে
}
}