আমি যা জানতে চাই তা কেন জাভা অভ্যন্তরীণ শ্রেণীর অভ্যন্তরে স্থির ক্ষেত্র / পদ্ধতি নিষিদ্ধ করে
কারণ সেই অভ্যন্তর শ্রেণিগুলি "উদাহরণ" অভ্যন্তর শ্রেণি। এটি হ'ল এগুলি এনকোলেজিং অবজেক্টের একটি উদাহরণ বৈশিষ্ট্যের মতো।
যেহেতু তারা "উদাহরণস্বরূপ" শ্রেণি, তাই static
বৈশিষ্ট্যগুলিকে অনুমতি দেওয়ার কোনও মানে হয় না , কারণ static
এটি প্রথম স্থানে উদাহরণ ছাড়াই কাজ করা।
এটি একই রকম আপনি একই সাথে একটি স্থিতিশীল / উদাহরণ বৈশিষ্ট্য তৈরি করার চেষ্টা করেছিলেন।
নিম্নলিখিত উদাহরণটি ধরুন:
class Employee {
public String name;
}
আপনি যদি কর্মচারীর দুটি উদাহরণ তৈরি করেন:
Employee a = new Employee();
a.name = "Oscar";
Employee b = new Employee();
b.name = "jcyang";
এটি স্পষ্ট যে কেন প্রত্যেকটির সম্পত্তির জন্য নিজস্ব মূল্য আছে name
, তাই না?
অন্তর্গত শ্রেণীর ক্ষেত্রেও একই ঘটনা ঘটে; প্রতিটি অভ্যন্তর শ্রেণীর উদাহরণ অন্যান্য অভ্যন্তর শ্রেণীর উদাহরণগুলির চেয়ে স্বতন্ত্র।
সুতরাং যদি আপনি একটি counter
শ্রেণি বৈশিষ্ট্য তৈরি করার চেষ্টা করেন , তবে দুটি ভিন্ন উদাহরণের মধ্যে সেই মানটি ভাগ করার কোনও উপায় নেই।
class Employee {
public String name;
class InnerData {
static count;
}
}
আপনি যখন উদাহরণটি তৈরি করেন a
এবং b
উপরের উদাহরণে, স্ট্যাটিক ভেরিয়েবলের সঠিক মূল্য কী হবে count
? এটি নির্ধারণ করা সম্ভব নয়, কারণ InnerData
শ্রেণীর অস্তিত্ব সম্পূর্ণভাবে প্রতিটি ঘেরযুক্ত বস্তুর উপর নির্ভর করে।
এই কারণেই, যখন শ্রেণিটি ঘোষিত হয় static
, নিজেকে বাঁচার জন্য এটি আর জীবন্ত উদাহরণের প্রয়োজন হয় না। এখন যেহেতু কোনও নির্ভরতা নেই, আপনি নির্দ্বিধায় স্থিত বৈশিষ্ট্যটি ঘোষণা করতে পারেন।
আমি মনে করি এটি পুনরাবৃত্তিজনক মনে হয় তবে আপনি উদাহরণ বনাম শ্রেণীর বৈশিষ্ট্যগুলির মধ্যে পার্থক্য সম্পর্কে চিন্তাভাবনা করলে তা কার্যকর হবে।