Polymorphism
• এটি একটি অবজেক্টের বিভিন্ন রূপ ধারণ করার ক্ষমতা।
• Benefit: কোডের Flexibility, Extensibility এবং সংক্ষিপ্ততা নিশ্চিত করে।
• এটি একটি সিঙ্গেল ইন্টারফেসকে বিভিন্ন ফর্মে রিপ্রেজেন্ট করার সুযোগ দেয়।
Note: Poly অর্থ অনেক আর Morph অর্থ রূপ। একই জিনিসকে স্থানভেদে বিভিন্ন রূপে ব্যবহার করার পদ্ধতিই মূলত Polymorphism।
Polymorphism এর প্রকারভেদ:
1. Compile-time Polymorphism
✓ একে Static Binding বা Early Binding বলা হয়।
✓ এটি Function/Method Overloading-এর মাধ্যমে অর্জিত হয়।
✓ এক্ষেত্রে ফাংশনের নাম একই থাকে, কিন্তু parameters ভিন্ন হয়।
2. Runtime Polymorphism
✓ একে Dynamic Binding বা Late Binding বলা হয়।
✓ এটি Function/Method Overriding-এর মাধ্যমে অর্জিত হয়।
✓ এটি মূলত ইনহেরিটেন্সের ক্ষেত্রে দেখা যায় যেখানে চাইল্ড ক্লাস প্যারেন্ট ক্লাসের মেথডকে নতুন রূপ দেয়।
Runtime এবং Compile time polymorphism এর মধ্যকার পার্থক্য
কম্পাইল টাইম পলিমরফিজম | রান টাইম পলিমরফিজম |
| কম্পাইল টাইম পলিমরফিজম কম্পাইলার দ্বারা সমাধান করা হয়। | রান টাইম পলিমরফিজম কম্পাইলার দ্বারা সমাধান করা হয় না। |
| এটা স্ট্যাটিক বাইন্ডিং, আর্লি বাইন্ডিং এবং ওভারলোডিং নামেও পরিচিত। | এটা ডাইনামিক বাইন্ডিং, লেট বাইন্ডিং এবং ওভাররাইডিং নামেও পরিচিত। |
| এটা ফাংশন ওভারলোডিং এবং অপারেটর ওভারলোডিং দ্বারা অর্জিত হয়। | এটা ভার্চুয়াল ফাংশন এবং পয়েন্টার দ্বারা অর্জিত হয়। |
| এটা দ্রুত কার্যকরী। | এটা ধীর কার্যকরী। |
| কম্পাইল টাইম পলিমরফিজম কম ফ্লেক্সিবল। | রান টাইম পলিমরফিজম বেশি ফ্লেক্সিবল। |
| ইনহেরিটেন্স জড়িত নয়। | ইনহেরিটেন্স জড়িত। |