1. তিমি এবং গরু

এখানে একটি আকর্ষণীয় প্রাণীবিদ্যার তথ্য রয়েছে: একটি গরু একটি তিমির চেয়ে অনেক কাছাকাছি, উদাহরণস্বরূপ, একটি জলহস্তী পোটামাসের থেকে। দেখা যাচ্ছে যে গরু এবং তিমি তুলনামূলকভাবে নিকটাত্মীয়।

এখানে দেখুন. চলুন আপনাকে পলিমরফিজম সম্পর্কে বলি — OOP এর আরেকটি শক্তিশালী টুল । এর চারটি বৈশিষ্ট্য রয়েছে।


2. উত্তরাধিকার একটি নিরাময় নয়

Cowকল্পনা করুন যে আপনি একটি খেলার জন্য একটি ক্লাস লিখেছেন । এর অনেক ক্ষেত্র এবং পদ্ধতি রয়েছে। এই শ্রেণীর বস্তু বিভিন্ন জিনিস করতে পারে: হাঁটা, খাওয়া এবং ঘুম। গরুও হাঁটার সময় বেজে ওঠে। ধরুন আপনি ক্লাসের সবকিছুকে ক্ষুদ্রতম বিশদে বাস্তবায়ন করেছেন।

এবং তারপরে আপনার ক্লায়েন্ট এসে বলে যে সে একটি নতুন গেমের স্তর প্রকাশ করতে চায়, যেখানে সমস্ত ক্রিয়া সমুদ্রে ঘটে এবং প্রধান চরিত্রটি একটি তিমি।

আপনি একটি Whaleক্লাস ডিজাইন করা শুরু করেন এবং বুঝতে পারেন যে এটি ক্লাস থেকে সামান্য ভিন্ন Cow। উভয় শ্রেণীর যুক্তি খুবই অনুরূপ এবং আপনি উত্তরাধিকার ব্যবহার করার সিদ্ধান্ত নেন।

জাভাতে পলিমরফিজম

Cowঅভিভাবক শ্রেণীর ভূমিকা নেওয়ার জন্য ক্লাসটি আদর্শ: এতে সমস্ত প্রয়োজনীয় পরিবর্তনশীল এবং পদ্ধতি রয়েছে । আমাদের যা করতে হবে তা হল তিমিকে সাঁতার কাটার ক্ষমতা দেওয়া। কিন্তু একটি সমস্যা আছে: আপনার তিমির পা, শিং এবং একটি ঘণ্টা আছে। সর্বোপরি, এই কার্যকারিতা Cowক্লাসের ভিতরে প্রয়োগ করা হয়। এখানে কি করা যায়?

জাভাতে পলিমরফিজম।  উত্তরাধিকার

3. পদ্ধতি ওভাররাইডিং

পদ্ধতি ওভাররাইডিং আমাদের উদ্ধারে আসে। যদি আমরা এমন একটি পদ্ধতি উত্তরাধিকার সূত্রে পেয়ে থাকি যা আমাদের নতুন ক্লাসে আমরা যা চাই তা পুরোপুরি করে না, আমরা সেই পদ্ধতিটিকে অন্য একটি দিয়ে প্রতিস্থাপন করতে পারি।

পদ্ধতি ওভাররাইডিং

এটা কিভাবে করা হয়? আমাদের বংশধর শ্রেণীতে, আমরা অভিভাবক শ্রেণীর পদ্ধতি হিসাবে একই পদ্ধতি ঘোষণা করি যা আমরা ওভাররাইড করতে চাই। আমরা এটিতে আমাদের নতুন কোড লিখি। এবং এটিই - এটি যেন পিতামাতার ক্লাসে পুরানো পদ্ধতিটি বিদ্যমান নেই।

এটা এভাবে কাজ করে:

কোড বর্ণনা
class Cow
{
   public void printColor ()
   {
      System.out.println("I'm a white whale");
   }

   public void printName()
   {
      System.out.println("I'm a cow");
   }
}

class Whale extends Cow
{
   public void printName()
   {
      System.out.println("I'm a whale");
   }
}
  • দুটি শ্রেণী এখানে সংজ্ঞায়িত করা হয়েছে — CowএবংWhale
  • Whaleউত্তরাধিকারসূত্রেCow
  • ক্লাস পদ্ধতিটি Whaleওভাররাইড করেprintName()
public static void main(String[] args)
{
   Cow cow = new Cow();
   cow.printName();
}
এই কোডটি স্ক্রিনে নিম্নলিখিত পাঠ্য প্রদর্শন করে:
I'm a cow
public static void main(String[] args)
{
   Whale whale = new Whale();
   whale.printName();
}
এই কোডটি স্ক্রিনে নিম্নলিখিতগুলি প্রদর্শন করে:
I'm a whale

ক্লাসের উত্তরাধিকারী হওয়ার পরে Cowএবং printNameপদ্ধতিটি ওভাররাইড করার পরে, Whaleক্লাসে আসলে নিম্নলিখিত ডেটা এবং পদ্ধতিগুলি রয়েছে:

class Whale
{
   public void printColor()
   {
      System.out.println("I'm a white whale");
   }

   public void printName()
   {
      System.out.println("I'm a whale");
   }
}
আমরা কোন পুরানো পদ্ধতি সম্পর্কে জানি না।