Method Overloading এবং Method Overriding জাভা প্রোগ্রামিং ভাষায় পলিমরফিজমের দুটি গুরুত্বপূর্ণ অংশ। এই দুটি বৈশিষ্ট্যই একই নামের মেথডকে ব্যবহারের মাধ্যমে বিভিন্ন আচরণ প্রদান করে, তবে তাদের মধ্যে মূল পার্থক্য আছে।
1. Method Overloading (মেথড ওভারলোডিং)
- বর্ণনা: মেথড ওভারলোডিং হল একটি প্রক্রিয়া যেখানে একটি ক্লাসে একই নামের একাধিক মেথড থাকে, কিন্তু তাদের প্যারামিটার সংখ্যা বা টাইপ ভিন্ন হয়। অর্থাৎ, একই নামের মেথড বিভিন্ন আর্গুমেন্টের সাথে ব্যবহার করা হয়।
- কী পরিবর্তন হয়:
- মেথডের নাম একই থাকে, কিন্তু প্যারামিটার (সংখ্যা, টাইপ, বা আর্ডার) পরিবর্তিত হয়।
- রিটার্ন টাইপ পরিবর্তন করা সম্ভব নয়।
- এটি কম্পাইল টাইম (স্ট্যাটিক) পলিমরফিজম।
উদাহরণ:
class Calculator { // Method to add two integers public int add(int a, int b) { return a + b; } // Overloaded method to add three integers public int add(int a, int b, int c) { return a + b + c; } // Overloaded method with different parameter types public double add(double a, double b) { return a + b; } }এখানে,
addমেথড তিনটি ভিন্ন ভিন্ন প্যারামিটার (সংখ্যা এবং টাইপ) নিয়ে ওভারলোড করা হয়েছে।
2. Method Overriding (মেথড ওভাররাইডিং)
- বর্ণনা: মেথড ওভাররাইডিং হল একটি প্রক্রিয়া যেখানে একটি সাবক্লাস (child class) তার সুপারক্লাস (parent class) থেকে একটি মেথডকে পুনরায় সংজ্ঞায়িত (redefine) করে। এটি মূলত সুপারক্লাসের মেথডের আচরণ পরিবর্তন করতে ব্যবহৃত হয়।
- কী পরিবর্তন হয়:
- মেথডের নাম, প্যারামিটার, এবং রিটার্ন টাইপ একই থাকে।
- এটি রানটাইম (ডাইনামিক) পলিমরফিজম।
@Overrideঅ্যানোটেশন ব্যবহার করা হয়।
উদাহরণ:
class Animal { // Parent class method public void sound() { System.out.println("Some animal makes a sound"); } } class Dog extends Animal { // Overriding the parent class method @Override public void sound() { System.out.println("Bark"); } } class TestOverriding { public static void main(String[] args) { Animal myAnimal = new Dog(); // Upcasting myAnimal.sound(); // Output: Bark } }এখানে,
Dogক্লাসেsound()মেথডটিAnimalক্লাস থেকে ওভাররাইড করা হয়েছে এবং এর আচরণ পরিবর্তন করা হয়েছে।
Method Overloading এবং Method Overriding এর মধ্যে পার্থক্য:
| বৈশিষ্ট্য | Method Overloading | Method Overriding |
|---|---|---|
| নাম | একই নামের মেথড বিভিন্ন প্যারামিটার সহ ব্যবহৃত হয় | একই নাম, প্যারামিটার এবং রিটার্ন টাইপ সহ মেথড রিপ্লেস করা হয় |
| প্যারামিটার | প্যারামিটার সংখ্যা বা টাইপ পরিবর্তন হয় | প্যারামিটার সংখ্যা বা টাইপ পরিবর্তন হয় না |
| রিটার্ন টাইপ | রিটার্ন টাইপ পরিবর্তন করা যায় না | রিটার্ন টাইপ একই থাকে |
| পলিমরফিজম | কম্পাইল টাইম (স্ট্যাটিক) পলিমরফিজম | রানটাইম (ডাইনামিক) পলিমরফিজম |
| অ্যাক্সেস মডিফায়ার | কোন সমস্যা নেই | প্যারেন্ট ক্লাসের মেথডে অ্যাক্সেস মডিফায়ারটি কমপক্ষে সাবক্লাসের মেথডের মতো হতে হবে |
| অ্যানোটেশন | @Override ব্যবহার করা হয় না | @Override অ্যানোটেশন ব্যবহৃত হয় |
- Method Overloading: একই নামের মেথড, কিন্তু প্যারামিটার সংখ্যা বা টাইপ ভিন্ন। এটি স্ট্যাটিক পলিমরফিজম।
- Method Overriding: সাবক্লাসে সুপারক্লাসের মেথড পুনঃসংজ্ঞায়িত করা, এবং এটি রানটাইম পলিমরফিজম তৈরি করে।
এটি প্রোগ্রামিংয়ে গুরুত্বপূর্ণ পদ্ধতি হিসেবে ব্যবহার করা হয় এবং কোডের পুনঃব্যবহারযোগ্যতা এবং নমনীয়তা বৃদ্ধি করে।
Content added By
Read more