স্ট্যাটিক নেস্টেড ক্লাস - 1

"সুতরাং, টপিক নম্বর দুই হল স্ট্যাটিক নেস্টেড ক্লাস। মনে রাখবেন যে নন-স্ট্যাটিক নেস্টেড ক্লাসগুলিকে ইনার ক্লাস বলা হয় ।

"আসুন একটি নেস্টেড ক্লাস ঘোষণার প্রেক্ষাপটে স্ট্যাটিক শব্দের অর্থ কী তা নিয়ে মাথা গুটিয়ে নেওয়া যাক। আপনি কী মনে করেন?"

"যদি একটি ভেরিয়েবলকে স্ট্যাটিক হিসাবে ঘোষণা করা হয়, তবে ভেরিয়েবলের শুধুমাত্র একটি অনুলিপি বিদ্যমান থাকে। সুতরাং, যদি একটি নেস্টেড ক্লাস স্ট্যাটিক হয়, তাহলে এর মানে কি আপনি সেই ক্লাসের শুধুমাত্র একটি অবজেক্ট তৈরি করতে পারবেন?"

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

"আহ। সাধারণ পদ্ধতিগুলি অন্তর্নিহিতভাবে একটি অবজেক্ট রেফারেন্স সংরক্ষণ করে, কিন্তু স্ট্যাটিক পদ্ধতিগুলি তা করে না। স্ট্যাটিক ক্লাসের ক্ষেত্রে এটি একই, আমি কি ঠিক বলছি, এলি?"

"অবশ্যই। আপনার দ্রুত উপলব্ধি প্রশংসনীয়। স্ট্যাটিক নেস্টেড ক্লাসে তাদের বাইরের শ্রেণীর বস্তুর গোপন রেফারেন্স নেই।"

class Zoo
{
 private static int count = 7;
 private int mouseCount = 1;

 public static int getAnimalCount()
 {
  return count;
 }

 public int getMouseCount()
 {
  return mouseCount;
 }

 public static class Mouse
 {
  public Mouse()
  {
  }
   public int getTotalCount()
  {
   return count + mouseCount; // Compilation error.
  }
 }
}

"আসুন এই উদাহরণটি সাবধানে পর্যালোচনা করি।"

"স্ট্যাটিক getAnimalCount পদ্ধতিটি কোন ভেরিয়েবল অ্যাক্সেস করতে পারে?"

"শুধুমাত্র স্ট্যাটিক। কারণ এটি একটি স্ট্যাটিক পদ্ধতি।"

"গেটমাউসকাউন্ট পদ্ধতিটি কোন ভেরিয়েবল অ্যাক্সেস করতে পারে?"

"স্ট্যাটিক এবং নন-স্ট্যাটিক উভয়ই। এটিতে একটি চিড়িয়াখানার বস্তুর একটি লুকানো রেফারেন্স (এটি) রয়েছে।"

"এটা ঠিক। তাই, স্ট্যাটিক নেস্টেড মাউস ক্লাস, স্ট্যাটিক পদ্ধতির মতো, চিড়িয়াখানা ক্লাসের স্ট্যাটিক ভেরিয়েবল অ্যাক্সেস করতে পারে, কিন্তু এটি অ-স্ট্যাটিকগুলি অ্যাক্সেস করতে পারে না।"

"আমরা নিরাপদে মাউস অবজেক্ট তৈরি করতে পারি, এমনকি একটি চিড়িয়াখানা অবজেক্ট তৈরি না হলেও। এখানে আপনি কীভাবে এটি করতে পারেন:"

class Home
{
 public static void main(String[] args)
 {
  Zoo.Mouse mouse = new Zoo.Mouse();
 }
}

"মাউস ক্লাসটি আসলে একটি খুব সাধারণ শ্রেণী। এটিকে চিড়িয়াখানা শ্রেণীর অভ্যন্তরে ঘোষণা করা হলে এটি দুটি বিশেষ বৈশিষ্ট্য দেয়।"

1) বাইরের ক্লাসের বাইরে নেস্টেড ক্লাসের (যেমন মাউস ক্লাস) অবজেক্ট তৈরি করার সময়, আপনাকে অবশ্যই বাইরের ক্লাসের নাম নির্দিষ্ট করতে ডট অপারেটর ব্যবহার করতে হবে।

"এর মত, যেমন: Zoo.Mouse।"

2) Zoo.Mouse ক্লাস এবং এর অবজেক্টের কাছে Zoo ক্লাসের ব্যক্তিগত স্ট্যাটিক ভেরিয়েবল এবং পদ্ধতিতে অ্যাক্সেস রয়েছে (যেহেতু মাউস ক্লাসটিও Zoo ক্লাসের মধ্যে ঘোষণা করা হয়েছে)।

"আজকের জন্য এটাই।"

"তাহলে শুধু একটি অতিরিক্ত নাম এবং এটাই?"

"হ্যাঁ."

"এটি প্রথমে মনে হওয়ার চেয়ে আরও সহজ।"