আমরা ইতিমধ্যে এই বিষয়ে কথা বলেছি যে ক্লাসগুলি জটিল ডেটা টাইপ। এখন আসুন ক্লাসের অন্য দিক সম্পর্কে একটু কথা বলি — কীভাবে জাভা মেশিন দ্বারা ক্লাস পরিচালনা করা হয়। মনে রাখবেন জাভাতে সবকিছুই একটি অবজেক্ট, এমনকি একটি ক্লাস। একটি শ্রেণী একটি বস্তু। যে আপনাকে অবাক করে? তাহলে চলুন চলতে থাকুক।
মেমরিতে একটি ক্লাস লোড হচ্ছে
প্রকৃতপক্ষে, যখন একটি ক্লাস মেমরিতে লোড করা হয়, তখন তিনটি বিশেষ "অবজেক্ট" তৈরি হয়:
দৃষ্টান্তের সংক্ষিপ্ত বিবরণ:
হলুদ আয়তক্ষেত্র:
কোড ফাইলটি ".class" এক্সটেনশন সহ একটি ফাইল হিসাবে ডিস্কে সংরক্ষণ করা হয়। এটিতে ক্লাস, এর ক্ষেত্র এবং পদ্ধতি এবং সেইসাথে বাইটকোডে সংকলিত পদ্ধতির উত্স কোড সম্পর্কে তথ্য রয়েছে।
কমলা আয়তক্ষেত্র:
যখন জাভা মেশিন মেমরিতে একটি ক্লাস লোড করে, তখন এটি কম্পিউটারের প্রসেসর এবং অপারেটিং সিস্টেমের জন্য নির্দিষ্ট মেশিন কোডে বাইটকোড কম্পাইল করে। শুধুমাত্র জাভা মেশিনের এই মেশিন কোড অ্যাক্সেস আছে. জাভা প্রোগ্রামার হিসাবে, আমাদের এটিতে অ্যাক্সেস নেই।
সবুজ আয়তক্ষেত্র:
জাভা মেশিন একটি অবজেক্ট তৈরি করে যাতে ক্লাসের সমস্ত স্ট্যাটিক ভেরিয়েবল এবং পদ্ধতি থাকে। আপনি ক্লাসের নাম ব্যবহার করে এই "অবজেক্ট" অ্যাক্সেস করেন।
উদাহরণস্বরূপ, আপনি যখন লিখছেন , আপনি ক্লাসে অবস্থিত স্ট্যাটিক ভেরিয়েবলের উল্লেখ করছেন । এই বস্তুটি আমাদের সবুজ আয়তক্ষেত্র। এবং যে যেখানে স্ট্যাটিক ভেরিয়েবল সংরক্ষণ করা হয়.java.lang.Math.PI
PI
java.lang.Math
java.lang.Math
PI
নীল আয়তক্ষেত্র:
যখন জাভা মেশিন মেমরিতে একটি ক্লাসের কোড লোড করে, তখন এটি একটি বিশেষ java.lang.Class
বস্তু তৈরি করে, যা লোড করা ক্লাস সম্পর্কে তথ্য সংরক্ষণ করে: এর নাম, পদ্ধতির নাম, ক্ষেত্রের নাম এবং প্রকারগুলি ইত্যাদি।
"ক্লাস" নামটি একটু বিভ্রান্তিকর হতে পারে। এটাকে ClassInfo বলাটা আরও বোধগম্য হবে, যেহেতু এই ক্লাসটি শুধু লোড করা ক্লাস সম্পর্কে কিছু তথ্য সঞ্চয় করে।
আপনি এই মত একটি কমান্ড ব্যবহার করে যে কোনো ধরনের জন্য ক্লাস অবজেক্ট পেতে পারেন:
Class name = ClassName.class;
উদাহরণ:
কোড | বিঃদ্রঃ |
---|---|
|
ক্লাস Class সম্পর্কে তথ্য সহ একটি বস্তু পানString |
|
ক্লাস Class সম্পর্কে তথ্য সহ একটি বস্তু পানObject |
|
ক্লাস Class সম্পর্কে তথ্য সহ একটি বস্তু পানInteger |
|
ধরন Class সম্পর্কে তথ্য সহ একটি বস্তু পানint |
|
ধরন Class সম্পর্কে তথ্য সহ একটি বস্তু পানvoid |
আপনি যেকোন অবজেক্ট থেকে ক্লাস ডিসক্রিপশন অবজেক্টের একটি রেফারেন্সও পেতে পারেন, যেহেতু প্রতিটি অবজেক্টের মেথড থাকে getClass()
, যা এটি Object
ক্লাস থেকে উত্তরাধিকার সূত্রে পায়।
উদাহরণ:
কোড | বিঃদ্রঃ |
---|---|
|
একই বস্তু হিসাবেString.class |
|
একই বস্তু হিসাবেInteger.class |
|
একই বস্তু হিসাবেBoolean.class |
GO TO FULL VERSION