কম্পিউটার

ফিক্স:স্ট্যাটিক প্রসঙ্গ থেকে নন স্ট্যাটিক পদ্ধতি উল্লেখ করা যাবে না

অনেক প্রোগ্রামার ত্রুটি বার্তার মুখোমুখি হন 'অস্থির পদ্ধতি একটি স্ট্যাটিক প্রসঙ্গ থেকে উল্লেখ করা যায় না ' যখন তারা কোডিং করছে। এই ত্রুটি বার্তাটি নির্দিষ্ট নয় এবং ত্রুটির শর্তগুলি সত্য হলে যেকোনো IDE-তে ঘটতে পারে৷

ফিক্স:স্ট্যাটিক প্রসঙ্গ থেকে নন স্ট্যাটিক পদ্ধতি উল্লেখ করা যাবে না

এটি নতুনদের জন্য একটি খুব সাধারণ ভুল যেখানে প্রোগ্রামার ক্লাসের একটি উদাহরণ না তৈরি করে একটি ক্লাস 'স্ট্যাটিকলি' ব্যবহার করার চেষ্টা করে। আপনি স্ট্যাটিক ক্লাস ব্যবহার করার সময় বেশ কয়েকটি শর্ত পূরণ করতে হবে। এই প্রবন্ধে, আমরা বেশ কয়েকটি ভিন্ন কেসের মধ্য দিয়ে যাব এবং কীভাবে একটি স্ট্যাটিক ক্লাস ব্যবহার করতে হয় সে সম্পর্কে আপনাকে গাইড করব।

একটি স্ট্যাটিক পদ্ধতি কি?

যেকোন পদ্ধতিতে 'স্ট্যাটিক' কীওয়ার্ড যোগ করা পদ্ধতিটিকে স্ট্যাটিক মেথড হিসেবে পরিচিত করে তোলে। একটি স্থির পদ্ধতি একটি বস্তুর (যা আদর্শ) এর অন্তর্গত না হয়ে শ্রেণীর অন্তর্গত। একটি ক্লাসের একটি উদাহরণ তৈরি করার শর্ত ছাড়াই একটি স্ট্যাটিক পদ্ধতি সহজে আহ্বান করা যেতে পারে৷

স্ট্যাটিক পদ্ধতির বিভিন্ন ব্যবহার রয়েছে উদাহরণস্বরূপ, এটি ব্যবহার করে আপনি একটি স্ট্যাটিক ডেটা সদস্য এবং এর মান পরিবর্তন করতে পারেন। যাইহোক, স্ট্যাটিক পদ্ধতি ব্যবহার করার সময় এখনও কিছু সীমাবদ্ধতা রয়েছে। উদাহরণস্বরূপ, আপনি যদি আপনার ক্লাসের নন-স্ট্যাটিক ক্ষেত্রগুলি অ্যাক্সেস করতে চান তবে আপনাকে অবশ্যই একটি নন-স্ট্যাটিক পদ্ধতি ব্যবহার করতে হবে। সুতরাং সংক্ষেপে, স্ট্যাটিক পদ্ধতিগুলি খুব কম ব্যবহার করা হয় তবে তাদের সুবিধা রয়েছে।

এখানে একটি সংক্ষিপ্ত উদাহরণ দেওয়া হল কিভাবে একটি স্ট্যাটিক পদ্ধতিতে সমস্ত বস্তুর সম্পত্তি পরিবর্তন করা যায়।

<পূর্ব>শ্রেণির ছাত্র{  int roll_no; স্ট্রিং নাম; স্ট্যাটিক স্ট্রিং কলেজ ="ইনফরমেশনটেক"; static void change(){  college =“Management”; }  ছাত্র (int number, String name_self){  roll_no =number;  name =name_self;  }  void display (){System.out.println(rollno+" "+name+" "+ কলেজ);} পাবলিক স্ট্যাটিক ভ্যাইড মেইন(স্ট্রিং আর্গস[]){ Students.change(); Students stu_1 =নতুন ছাত্র (100,"Mexican"); Students stu_2 =new Students (202,"American"); Students stu_3 =নতুন ছাত্র (309,"ব্রিটিশ"); stu_1.display(); stu_2.display(); stu_3.display(); }  }

প্রোগ্রামটির আউটপুট হবে:

100 মেক্সিকান ম্যানেজমেন্ট 202 আমেরিকান ম্যানেজমেন্ট 309 ব্রিটিশ ম্যানেজমেন্ট

একটি ক্লাস এবং একটি ক্লাসের উদাহরণের মধ্যে পার্থক্য কী?

মনে করুন আপনি রাস্তায় হাঁটছেন এবং আপনি একটি গাড়ি দেখতে পাচ্ছেন। এখন আপনি অবিলম্বে জানেন যে এটি একটি গাড়ি এমনকি যদি আপনি জানেন না এর মডেল বা ধরন কি। এটি কারণ আপনি জানেন যে এটি 'গাড়ির' শ্রেণীর অন্তর্গত যা আপনি ইতিমধ্যেই জানেন। এখানে ক্লাসকে একটি টেমপ্লেট বা একটি ধারণা হিসাবে ভাবুন।

এখন আপনি কাছে যাওয়ার সাথে সাথে আপনি গাড়িটির মডেল এবং মেক দেখতে পাবেন। এখানে আপনি 'কার' ক্লাসের 'উদাহরণ' চিনতে পারছেন। এখানে সমস্ত বৈশিষ্ট্য বিস্তারিতভাবে উপস্থিত থাকবে; চাকা, অশ্বশক্তি, রিমস ইত্যাদি।

বৈশিষ্ট্যগুলির একটি উদাহরণ হতে পারে যে ক্লাস 'কার' বলে যে সমস্ত গাড়ির চাকা থাকা উচিত। আপনি যে গাড়িটি দেখছেন (গাড়ির ক্লাসের একটি উদাহরণ) তাতে অ্যালয় রিম রয়েছে৷

অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং-এ, আপনি নিজেই ক্লাসটি সংজ্ঞায়িত করেন এবং ক্লাসের ভিতরে, আপনি 'রঙ' টাইপের একটি ক্ষেত্র সংজ্ঞায়িত করেন। যখনই ক্লাসটি ইনস্ট্যান্ট করা হয়, মেমরি স্বয়ংক্রিয়ভাবে ব্যাকএন্ডে রঙের জন্য সংরক্ষিত হয় এবং পরে, আপনি এটিকে একটি নির্দিষ্ট মান দিতে পারেন (উদাহরণস্বরূপ লাল)। যেহেতু এই জাতীয় বৈশিষ্ট্যগুলি নির্দিষ্ট, সেগুলি অ-স্থির।

বিপরীতে, স্ট্যাটিক পদ্ধতি এবং ক্ষেত্রগুলি সমস্ত দৃষ্টান্তের সাথে ভাগ করা হয়। এগুলি মান বা আইটেমের জন্য তৈরি করা হয় যা ক্লাসের জন্য নির্দিষ্ট এবং উদাহরণের জন্য নয়। পদ্ধতির জন্য, বিশ্বব্যাপী পদ্ধতি হতে পারে (উদাহরণস্বরূপ, স্ট্রিংটোইন্ট কনভার্টার) এবং ক্ষেত্রগুলির জন্য, তারা সাধারণত আপনার কোড অনুসারে ধ্রুবক থাকে (উদাহরণস্বরূপ, যদি আপনি শুধুমাত্র সাধারণ গাড়ি তৈরি করেন তবে গাড়ির ধরনটি স্ট্যাটিক হতে পারে)।

এখন, আমরা সমস্ত বিভিন্ন ক্ষেত্রে দেখব যেখানে আপনার কোডিং ভুল হতে পারে এবং সেগুলি ঠিক করার জন্য সমাধানগুলি দেখব৷

সমস্যা 1:আপনি এমন কিছুকে কল করছেন যা বিদ্যমান নেই

আমরা এমন কিছু ক্ষেত্রে এসেছি যেখানে ব্যবহারকারীরা একে অপরের সাথে স্ট্যাটিক এবং নন-স্ট্যাটিক উভয় পদ্ধতি ব্যবহার করছেন। যখন আমরা এটি করি, তখন আপনার সতর্ক হওয়া উচিত যে কোন পদ্ধতিটি কী কল করছে (স্ট্যাটিক বা না পরিপ্রেক্ষিতে)। নিম্নলিখিত কোডটি দেখুন:

private java.util.List someMethod(){    /* কিছু কোড */    someList রিটার্ন করুন; }public static void main(String[] strArgs){              // নিম্নলিখিত বিবৃতিটি ত্রুটি ঘটায়। আপনি জানেন কেন..  java.util.List someList =someMethod(); }

এখানে, স্থির পদ্ধতি হল someMethod কল করা। অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং-এ, আমরা যে ডেটাতে কাজ করতে চাই তার সাথে আমরা ডেটাকে একত্রে এনক্যাপসুলেট করি। এখানে, একটি অবজেক্ট ছাড়া, কোন ইনস্ট্যান্স ডেটা নেই এবং যখন ইনস্ট্যান্স পদ্ধতিগুলি ক্লাসের সংজ্ঞার অংশ হিসাবে বিদ্যমান, সেখানে সর্বদা একটি অবজেক্ট ইনস্ট্যান্স থাকা উচিত যাতে সেগুলিকে ডেটা প্রদান করা যায়।

সুতরাং সংক্ষেপে, আপনি এমন কিছুকে কল করতে পারবেন না যা বিদ্যমান নেই। যেহেতু আপনি একটি বস্তু তৈরি নাও করতে পারেন, অ-স্থির পদ্ধতি এখনও বিদ্যমান নেই। যাইহোক, অন্যদিকে, একটি স্থির পদ্ধতি সর্বদা বিদ্যমান থাকবে (সংজ্ঞার কারণে)।

ইস্যু 2:পদ্ধতিগুলি স্ট্যাটিক করা হয় না

আপনি যদি পদ্ধতিগুলির একটি উদাহরণ তৈরি না করে আপনার স্ট্যাটিক প্রধান পদ্ধতি থেকে পদ্ধতিগুলি আহ্বান করেন তবে আপনি একটি ত্রুটি বার্তা পাবেন। এখানে, একই নীতি প্রযোজ্য; আপনি এমন কিছু অ্যাক্সেস করতে পারবেন না যা বিদ্যমান নেই৷

পাবলিক ক্লাস BookStoreApp2 {    //constants for options   স্ক্যানার ইনপুট =নতুন স্ক্যানার (System.in); পাবলিক স্ট্যাটিক ভ্যায়েড মেইন(স্ট্রিং[]আর্গস) {        BookStoreItem[] আইটেম;//ডিক্লেয়ারিং অ্যারে        আইটেম =নতুন বুকস্টোর আইটেম প্রিন্টমেনু(); getUserChoice(); এর জন্য (int i =0; i  

এখানে এই কোডে, আপনাকে উভয় পদ্ধতি printMenu() রূপান্তর করতে হবে এবং getUserChoice() স্ট্যাটিক পদ্ধতিতে।

তাই আপনি যদি এইরকম পরিস্থিতির কাছাকাছি যেতে চান তবে আপনি একটি কন্সট্রাক্টর ব্যবহার করতে পারেন পরিবর্তে. উদাহরণস্বরূপ, আপনি আপনার main() পদ্ধতির বিষয়বস্তু নিতে পারেন এবং একটি কন্সট্রাক্টরের ভিতরে রাখতে পারেন।

public BookStoreApp2(){   // এখানে মূল পদ্ধতির বিষয়বস্তু রাখুন} এটি করার পরে, আপনার main() পদ্ধতির ভিতরে নিম্নলিখিতগুলি করুন:public void main( String[] args ){ new BookStoreApp2(); }

যদি এই টিপসগুলি আপনার ক্ষেত্রে কাজ না করে বা আপনার কোড ভিন্ন হয়, তাহলে আপনাকে স্ট্যাটিক ক্লাস এবং পদ্ধতির মৌলিক নীতিগুলি মনে রাখতে হবে এবং মৌলিক নীতিটি লঙ্ঘন করা হচ্ছে না তা নিশ্চিত করতে আপনার কোড পুনরায় পরীক্ষা করা উচিত।


  1. ল্যাপটপ স্পীকার থেকে কোন শব্দ ঠিক করুন

  2. উইন্ডোজ 10 এ হোমগ্রুপ তৈরি করা যাবে না ঠিক করুন

  3. সার্ভার থেকে সংযোগ বিচ্ছিন্ন ফলআউট 76 ঠিক করুন

  4. FIX:Windows 10 এ সেকেন্ডারি মিরর ড্রাইভ থেকে বুট করা যাবে না (সমাধান)