ষ্ট্যাটিক কীওয়ার্ড(Static Keyword)


আমরা যখন ভেরিয়েবল নিয়ে আলোচনা করছিলাম তখন ষ্ট্যাটিক ভেরিয়েবল নিয়ে কিছু আলোচনা বাকী রেখেছিলাম মনে আছে? আমরা এখন সেগুলো আলোচনা করবো। আর ষ্ট্যাটিক শুধু ভেরিয়েবলই হয় না, মেথডও হয়। যখন কোন ভেরিয়েবল এর সামনে static কীওয়ার্ড ব্যবহার করা হয় তখন তাকে বলে ষ্ট্যাটিক ভেরিয়েবল আর মেথডের সামনে ব্যবহার করলে বলা হয় ষ্ট্যাটিক মেথড।

আগে আমরা ষ্ট্যাটিক ভেরিয়েবল নিয়েই আলোচনা করবো।

ষ্ট্যাটিক ভেরিয়েবল(Static Variable):

যখন কোন ভেরিয়েবল এর সামনে static কীওয়ার্ড ব্যবহার করা হয় তখন তাকে বলে ষ্ট্যাটিক ভেরিয়েবল সেটা তো আগেই বলেছি। কোন ভেরিয়েবলের সামনে static কীওয়ার্ড ব্যবহার করা হলে তার ক্যারেকটারিসটিক্স (Characteristics) কিছু বদলে যায়। যেমন:

১. আমরা তো জানি যে কোন একটি ক্লাশের মেথডকে কল করতে গেলে বা কোন ভেরিয়েবলের ভ্যালু পেতে গেলে আমাদের ওই ক্লাশের অবজেক্ট তৈরী করতে হয় আগে। তারপর অবজেক্টের নামের পরে ডট(.) দিয়ে ভেরিয়েবলের ভ্যালু পাই বা মেথডকে কল করতে পারি।

কিন্তু যখন ক্লাশের মধ্যে কোন ভেরিয়েবলকে static করা হয় তখন সেটির ভ্যালু পাবার জন্য ওই ক্লাশের অবজেক্ট তৈরী না করলেও চলে। শুধু ক্লাশের নাম লিখে একটা ডট(.) দিয়ে ভেরিয়েবলটির নাম লিখলেই ভেরিয়েবলটির ভ্যালু আমরা পেতে পারি।

যেমন দেখো আমরা একটি ভেরিয়েবলকে ষ্ট্যাটিক করেছি।




আর এখন এই ভেরিয়েবলের ভ্যালু পাবার জন্য আমাদের ক্লাশটির অবজেক্ট তৈরী করার দরকার নেই।

শুধু class_name.variable_name




আউটপুট:








ষ্ট্যাটিক মেথড(Static Method):

কোন মেথডের সামনে static কীওয়ার্ড ব্যবহার করা হলে তখন সেই মেথডটিকে বলে ষ্ট্যাটিক মেথড।

১. ষ্ট্যাটিক ভেরিয়েবলের ভ্যালু পাবার জন্য যেমন ক্লাশের অবজেক্ট তৈরী না করলেও চলে তেমনি ষ্ট্যাটিক মেথডকেও কল করার জন্য ক্লাশের অবজেক্ট না তৈরী করলেও চলে। আগের মতই:

class_name.method_name()

২. ষ্ট্যাটিক মেথড সরাসরি কোন নন-ষ্ট্যাটিক ভেরিয়েবলকে ব্যবহার করতে পারে না। শুধু ষ্ট্যাটিক ভেরিয়েবলকেই সে সরাসরি ব্যবহার করতে পারে। যেমন:




তবে হ্যাঁ একটা উপায়ে পারবে, যদি একই ক্লাশের একটা অবজেক্ট তৈরী করে সেখান থেকে ভেরিয়েবলটিকে ব্যবহার করে। যেমন: