যেহেতু getText()
অ স্থির হয় তাই আপনি এটিকে কোনও স্ট্যাটিক পদ্ধতি থেকে কল করতে পারবেন না।
কেন বুঝতে, আপনাকে দুজনের মধ্যে পার্থক্য বুঝতে হবে।
ইনস্ট্যান্স (অ স্থিতিশীল) পদ্ধতিগুলি কোনও নির্দিষ্ট ধরণের (শ্রেণি) অবজেক্টগুলিতে কাজ করে। এগুলি এই জাতীয় হিসাবে নতুন তৈরি করা হয়:
SomeClass myObject = new SomeClass();
একটি উদাহরণ পদ্ধতিতে কল করার জন্য, আপনি এটিকে কল করুন (myObject
):
myObject.getText(...)
তবে কোনও স্ট্যাটিক পদ্ধতি / ক্ষেত্র কেবলমাত্র প্রকারে সরাসরি কল করা যেতে পারে , এইভাবে বলুন:
পূর্ববর্তী বিবৃতিটি সঠিক নয়। স্ট্যাটিক ক্ষেত্রগুলি যেমন কোনও অবজেক্ট রেফারেন্স সহ উল্লেখ করা যায় myObject.staticMethod()
তবে এটি নিরুৎসাহিত করা হয় কারণ এটি ক্লাস ভেরিয়েবলগুলি তা পরিষ্কার করে না।
... = SomeClass.final
এবং তারা পৃথক ডেটা স্পেসে কাজ করার সময় একসাথে কাজ করতে পারে না (উদাহরণস্বরূপ ডেটা এবং শ্রেণি ডেটা)
আমাকে চেষ্টা এবং ব্যাখ্যা করতে দিন। এই শ্রেণিটি বিবেচনা করুন (psuedocode):
class Test {
string somedata = "99";
string getText() { return somedata; }
static string TTT = "0";
}
এখন আমি নিম্নলিখিত ব্যবহারের মামলা আছে:
Test item1 = new Test();
item1.somedata = "200";
Test item2 = new Test();
Test.TTT = "1";
মান কি?
আমরা হব
in item1 TTT = 1 and somedata = 200
in item2 TTT = 1 and somedata = 99
অন্য কথায়, TTT
এটি এমন একটি ডেটাম যা এই ধরণের সমস্ত দৃষ্টান্ত দ্বারা ভাগ করা হয়। সুতরাং এটি বলার কোনও মানে নেই
class Test {
string somedata = "99";
string getText() { return somedata; }
static string TTT = getText(); // error there is is no somedata at this point
}
সুতরাং প্রশ্নটি হল কেন টিটিটি স্থির বা কেন গেট টেক্সট () স্থির নয়?
অপসারণ করুন static
এবং এটি এই ত্রুটিটি অতিক্রম করতে হবে - তবে আপনার ধরণটি কী করে তা না বুঝেই পরবর্তী ত্রুটি পর্যন্ত এটি কেবল একটি স্টিকিং প্লাস্টার। getText()
এটি অ-স্থিতিশীল হওয়ার প্রয়োজনীয়তাগুলি কী কী ?