এবার আসি ইন্সট্যান্স ভেরিয়েবল এর ব্যাপারে। ইন্সট্যান্স ভেরিয়েবল হলো মেথডের বাইরে কিন্তু ক্লাশের(Class) ভেতরে ডিক্লেয়ার করা কোন ভেরিয়েবল।
যেমন এটি একটি ক্লাশ(Class):

এখন এই ক্লাশের ভেতরে কিন্তু কোন মেথডের বাইরে যদি কোন ভেরিয়েবল ডিক্লেয়ার করি তাহলে সেটাই ইন্সট্যান্স ভেরিয়েবল(Instance Variable)। যেমন:

এখন ইন্সট্যান্স ভেরিয়েবল নিয়ে কাজ করার জন্য কি কি জিনিস মাথায় রাখতে হবে সেগুলো একটু জানি।
ইন্সট্যান্স ভেরিয়েবলকে তুমি ওই ক্লাশের যে কোন মেথডের মধ্যে ব্যবহার করতে পারো।

কিন্তু যে মেথড থেকে ইন্সট্যান্স ভেরিয়েবলকে ব্যবহার করবে সেই মেথডে static কীওয়ার্ড(Keyword) থাকা যাবে না। যেমন:

এরকম static কীওয়ার্ড থাকা যাবে না। মূলত কোন মেথডের নামের পূর্বে যদি static কীওয়ার্ড থাকে তবে সেটাকে static method বলে, ইন্সট্যান্স ভেরিয়েবল এর নিয়মই হলো এটাকে ষ্ট্যাটিক মেথডে ব্যবহার করা যায় না। তবে হ্যা ব্যবহার করতে পারবে কিন্তু সেটার জন্য এই ক্লাশেরই একটা অবজেক্ট(Object) তৈরী করতে হবে এবং সেই অবজেক্টের রেফারেন্সে তুমি ভেরিয়েবলটিকে ব্যবহার করতে পারবে। কিন্তু এটার জন্য আমাদের OOP বুঝতে হবে। OOP চ্যাপ্টারে গিয়ে পরে আমরা এটা ব্যাখ্যা করবো।
কিন্তু একটা ব্যাপার হলো যে আমরা যখন নিচের প্রোগ্রামটি রান(Run) করাবো তখন জাভা এটিকে রান করতে পারবে না।

এরকম একটা স্ক্রীণ দেখাবে।

কারণ হচ্ছে যখন একটি ক্লাশকে জাভা কম্পাইলার(Compiler) রান করে তখন ক্লাশটির ভেতরে main মেথড আগে খোঁজে এবং main মেথডটিকেই আগে রান করে, কোন main মেথড না পেলে তখন এরকম একটি এরর দেখাবে তোমাকে।