পলিমরফিজম(Polymorphism)

পলিমরফিজম কথাটার অর্থ হলো একই কাজ বিভিন্নভাবে করা। পলিমরফিজম বিষয়টা ইমপ্লিমেন্ট(Implement) করা যায় দুই ভাবে।

  1. মেথড ওভারলোডিং(Method Overloading) এবং

  2. মেথড ওভাররাইডিং(Method Overriding)

মেথড ওভারলোডিং(Method Overloading):

কোন ক্লাশে একই নামের একাধিক মেথড থাকলে তাকে মেথড ওভারলোডিং বলে। তার মানে তুমি একটি ক্লাশে একই নামের দুইটি মেথড রাখতে পারো। কিন্তু এর জন্য কিছু নিয়ম আছে। যেমন:

তুমি দুইটি মেথডে প্যারামিটার টাইপ আলাদা করে দিয়ে মেথড ওভারলোডিং করতে পারো। যেমন:






প্যারামিটারের সংখ্যা বাড়িয়ে বা কমিয়ে দিয়ে মেথড ওভারলোডিং করতে পারো। যেমন:






মেথড ওভাররাইডিং(Method Overriding):

মেথড ওভাররাইডিং হলো যখন তোমার প্যারেন্ট ক্লাশে একটা মেথড আছে কিন্তু তুমি চাচ্ছ তোমার চাইল্ড ক্লাশে সেই মেথডে কিছু পরিবর্তন আনতে। এরকম প্রয়োজনে তুমি মেথড ওভাররাইডিং ব্যবহার করতে পারো।

যেমন ধরো আমাদের প্যারেন্ট ক্লাশে multiply নামে একটি মেথড আছে আমরা চাইল্ড ক্লাশে সেটার কার্যক্রমে কিছু পরিবর্তন আনতে চাচ্ছি।

প্যারেন্ট ক্লাশের multiply মেথড:




এবার চাইল্ড ক্লাশে এটাতে কিছু পরিবর্তন আনি।






কিন্তু এক্ষেত্রে কয়েকটি বিষয় তোমাকে মাথায় রাখতে হবে।

  • তুমি মেথডের মধ্যবর্তী সমস্ত কার্যক্রম পাল্টে ফেলতে পারো, কিন্তু

  • এছাড়া অন্য কোন কিছুই তুমি পরিবর্তন করতে পারবে না। যেমন: প্যারেন্ট মেথডের নাম এবং এই মেথডের নাম একই থাকতে হবে, প্যারামিটারগুলো একই থাকতে হবে, রিটার্ন টাইপ এবং এ্যাকসেস মডিফায়ারও(Access Modifier) ও একই থাকতে হবে। পরের চ্যাপ্টারেই আমরা এ্যাকসেস মডিফায়ার নিয়ে আলোচনা করবো।

  • প্যারেন্ট ক্লাশের কোন static মেথডকে চাইল্ড ক্লাশে Override করতে পারবে না। ষ্ট্যাটিক মেথড নিয়েও সামনে দুটো চ্যাপ্টার পরেই আলোচনা করা হবে।

  • প্যারেন্ট ক্লাশের কোন final মেথডকে চাইল্ড ক্লাশে Override করতে পারবে না। final মেথড নিয়েও কিছু পরে আলোচনা করা হবে।

এখন আমরা আগের উদাহরণে ফিরে যাই। দেখো এই জায়গাটুকুতে আমরা কি বলেছিলাম:




আমরা এখন BronoxCar ক্লাশে এই ফ্যাসিলিটিগুলো যোগ করার জন্য মেথড ওভাররাইডিং ব্যবহার করবো।




ব্যস কাজ শেষ। আমাদের নতুন ডিজাইনের কার Bronox এ কিছু নতুন ফ্যাসিলিটি যোগ হয়ে গেল।