ইনহেরিট্যান্স এবং পলিমরফিজম (Inheritance & Polymorphism)
ইনহেরিট্যান্স — শূন্য থেকে শুরু করার দরকার নেই (Inheritance — Don't Start from Scratch)
কল্পনা করুন আপনি Vehicle বা যানজট নামের দারুণ একটি ক্লাস তৈরি করেছেন। এখন আপনার Car (গাড়ি), Truck (ট্রাক) এবং Motorcycle (মোটরসাইকেল) তৈরি করতে হবে। এগুলোর সবকটিতেই ইঞ্জিন আছে, গতি আছে এবং এরা চলতে পারে — তবে প্রতিটিরই নিজস্ব কিছু বাড়তি বৈশিষ্ট্য রয়েছে। আপনি কি ওই একই কোড তিনবার লিখবেন? একদমই না!
ইনহেরিট্যান্স (Inheritance) নতুন একটি ক্লাসকে (যাকে চাইল্ড বা সাবক্লাস বলা হয়) আগে থেকে থাকা কোনো একটি ক্লাসের (যাকে প্যারেন্ট বা সুপারক্লাস বলা হয়) ফিল্ড এবং মেথডগুলো স্বয়ংক্রিয়ভাবে বা নিজে থেকে পেয়ে যাওয়ার সুযোগ দেয়। এরপর চাইল্ড ক্লাসটি তার নিজের মতো করে নতুন কিছু যোগ করতে পারে অথবা ইনহেরিট করে পাওয়া মেথডগুলোকে পরিবর্তন করে নিতে পারে।
জাভাতে এর জন্য extends কিওয়ার্ড ব্যবহার করা হয়। একটি চাইল্ড ক্লাস কেবল একটিমাত্র প্যারেন্টকেই এক্সটেন্ড (extend) করতে পারে (এটি সিঙ্গেল ইনহেরিট্যান্স বা single inheritance)।
extends ব্যবহার করে বেসিক বা সাধারণ ইনহেরিট্যান্স
মেথড ওভাররাইড করা এবং পলিমরফিজম (Method Overriding & Polymorphism)
ওভাররাইডিং (Overriding) মানে হলো, যখন একটি চাইল্ড ক্লাস ইনহেরিট করে পাওয়া মেথডের নিজের মতো করে একটি আলাদা সংস্করণ বা ভার্সন তৈরি করে। ধরুন, প্যারেন্ট ক্লাসের একটি speak() মেথড আছে যা বলে "...", কিন্তু ডগ (Dog) সেটিকে ওভাররাইড করে পরিবর্তন করে বলে "উফ! (Woof!)" এবং ক্যাট (Cat) ওটিকে ওভাররাইড করে বলে "মিয়াও! (Meow!)"।
পলিমরফিজম (Polymorphism) হলো সেই দারুণ জাদুটি, যা তখনই ঘটে যখন আপনি কোনো চাইল্ড অবজেক্টকে ধরে রাখার জন্য প্যারেন্ট টাইপ (parent type) ব্যবহার করেন। আপনি একটি Animal ভ্যারিয়েবলের ওপর speak() কল করতে পারেন, এবং অবজেক্টটি আসলে কী, তার ওপর ভিত্তি করে জাভা নিজে থেকেই সঠিক সংস্করণটি বেছে নেয় বা কল করে। এটি অনেকটা একদল মিউজিশিয়ানকে "পারফর্ম করো!" বলার মতো — প্রতিটি মিউজিশিয়ান তখন নিজের নিজের বাদ্যযন্ত্রটাই বাজায়।
জাভাতে (এবং অন্যান্য ডেভেলপারদের) এটা বোঝাতে @Override অ্যানোটেশন (annotation) ব্যবহার করবেন যে, আপনি ইচ্ছাকৃতভাবেই প্যারেন্ট ক্লাসের কোনো মেথডকে পরিবর্তন বা ওভাররাইড করছেন। এটি যেকোনো বানান ভুল ধরতেও সাহায্য করে — আপনি যদি মেথডের নাম ভুল লেখেন, তবে কম্পাইলার (compiler) আপনাকে সতর্ক করে দেবে।