স্থিতিশীল প্রসঙ্গ থেকে অ স্থিতিক চলক উল্লেখ করা যায় না


288

আমি এই পরীক্ষার কোডটি লিখেছি:

class MyProgram
{
    int count = 0;
    public static void main(String[] args)
    {
        System.out.println(count);
    }
}

তবে এটি নিম্নলিখিত ত্রুটি দেয়:

Main.java:6: error: non-static variable count cannot be referenced from a static context
        System.out.println(count);
                           ^

আমি আমার ক্লাস ভেরিয়েবলগুলি সনাক্ত করতে কীভাবে আমার পদ্ধতিগুলি পেতে পারি?


যখনই সম্ভব স্থির ব্যবহার এড়াতে চেষ্টা করুন। আপনি ঠিক একটি সম্পূর্ণ প্রোগ্রাম, সমস্ত স্ট্যাটিক লিখতে পারেনC । তবে এটি খুব ভাল হবে না। জাভাটিকে যেভাবে ব্যবহার করা উচিত তা ব্যবহার করার চেষ্টা করুন, অবজেক্ট ওরিয়েন্টেড ভাষা হিসাবে।
এরিক জি। হ্যাগ্রস্টম

উত্তর:


294

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

একই সময়ে, আপনি যে গাড়ীটি দেখছেন তা ক্লাস "কার" এর উদাহরণ, যেহেতু এটির যে সমস্ত সম্পত্তি রয়েছে বলে আপনি আশা করছেন: সেখানে কেউ এটি চালাচ্ছে, এর ইঞ্জিন রয়েছে, চাকা রয়েছে।

সুতরাং ক্লাসটি বলেছে "সমস্ত গাড়ির একটি রঙ আছে" এবং উদাহরণটি বলছে "এই নির্দিষ্ট গাড়িটি লাল" "

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

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

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

আপনার ক্ষেত্রে, এই কোডটি একটি প্রারম্ভিক ব্লক হিসাবে চেষ্টা করুন:

public static void main (String[] args)
{
    try
    {
        MyProgram7 obj = new MyProgram7 ();
        obj.run (args);
    }
    catch (Exception e)
    {
        e.printStackTrace ();
    }
}

// instance variables here

public void run (String[] args) throws Exception
{
    // put your code here
}

নতুন main()পদ্ধতিটি এতে শ্রেণীর একটি উদাহরণ তৈরি করে (অদ্ভুত শোনায় তবে যেহেতু main()ক্লাসের সাথে উদাহরণটির পরিবর্তে তৈরি করা হয়েছে, এটি এটি করতে পারে) এবং তারপরে একটি উদাহরণ পদ্ধতি ( run()) বলে।


আমি এই মুহূর্তে আমাদের নতুন সহকর্মীর কাছে এটি ব্যাখ্যা করছি - এই দুর্দান্ত ব্যাখ্যার জন্য ধন্যবাদ। এটি গ্রহণযোগ্য উত্তর করা উচিত।
সুপাহুপে

83

স্ট্যাটিক ক্ষেত্র এবং পদ্ধতিগুলি ক্লাসের সাথেই সংযুক্ত এবং এর উদাহরণগুলি নয়। আপনি যদি একটি বর্গ থাকে তাহলে A, একটি 'স্বাভাবিক' পদ্ধতি b, এবং একটি স্ট্যাটিক পদ্ধতি c, এবং আপনি একটি দৃষ্টান্ত করা aআপনার ক্লাসের A, কল A.c()এবং a.b()বৈধ। c()কোন দৃষ্টান্তটি সংযুক্ত আছে তা পদ্ধতিটির কোনও ধারণা নেই, সুতরাং এটি অ স্থির ক্ষেত্রগুলি ব্যবহার করতে পারে না।

আপনার জন্য সমাধান হ'ল আপনি হয় আপনার ক্ষেত্রগুলিকে অচল করে দিন বা আপনার পদ্ধতিগুলি অ স্থিতিশীল। আপনি মেইন এর মতো দেখতে পারেন:

class Programm {

    public static void main(String[] args) {
        Programm programm = new Programm();
        programm.start();
    }

    public void start() {
        // can now access non-static fields
    }
}

54

staticশব্দ একটি পদ্ধতি বা পরিবর্তনশীল একটি বর্গ মধ্যে জীবনচক্র পরিবর্তন। একটি staticপদ্ধতি বা পরিবর্তনশীল সময় একটি বর্গ লোড হয় এ তৈরি করা হয়। কোনও পদ্ধতি বা ভেরিয়েবল যা ঘোষিত হয় না staticকেবল তখনই তৈরি হয় যখন ক্লাসটি অবজেক্ট হিসাবে ইনস্ট্যান্ট করা হয় উদাহরণস্বরূপ newঅপারেটর ব্যবহার করে ।

শ্রেণীর জীবনচক্র, বিস্তৃত ভাষায়,

  1. শ্রেণীর উত্স কোডটি একটি টেম্পলেট বা প্যাটার্ন বা স্ট্যাম্প তৈরি করে লেখা হয় যা পরে ব্যবহার করা যেতে পারে
  2. newক্লাসটি ব্যবহার করে অপারেটরটির সাথে একটি অবজেক্ট তৈরি করে ক্লাসের প্রকৃত অবজেক্ট হিসাবে উদাহরণ তৈরি করতে হবে এবং তারপরে যখন বস্তুর সাথে কাজটি করা হবে
  3. আবর্জনা সংগ্রহের সময় স্মৃতি যেমন এটি ধারণ করে এমন সংস্থানগুলিকে পুনরায় দাবি করার উদ্দেশ্যে অবজেক্টটি ধ্বংস করুন।

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

ফলাফলটি হ'ল আপনি যখন নিজের জাভা অ্যাপ্লিকেশনটি কমান্ড লাইনের মাধ্যমে শুরু করেন যেমন java helloworldক্রিয়াকলাপ ঘটে। প্রথমে একটি জাভা ভার্চুয়াল মেশিন শুরু এবং আরম্ভ করা হয়। সংকলিত জাভা কোড যুক্ত হেলিওর্ল্ড.ক্লাস ফাইলটি জাভা ভার্চুয়াল মেশিনে লোড করা হবে। তারপর জাভা ভার্চুয়াল মেশিন একটি পদ্ধতি জন্য দেখায় helloworldবর্গ যে বলা হয় main(String [] args)। এই পদ্ধতিটি অবশ্যই এমন হওয়া উচিত staticযাতে এটি উপস্থিত থাকতে পারে যদিও ক্লাসটি আসলে কোনও বস্তু হিসাবে ইনস্ট্যান্ট করা হয় নি। জাভা ভার্চুয়াল মেশিন ক্লাস থেকে কোনও অবজেক্ট তৈরি করে ক্লাসের উদাহরণ তৈরি করে না। এটি কেবল ক্লাস লোড করে এবং main()পদ্ধতিতে কার্যকর করা শুরু করে ।

সুতরাং আপনাকে আপনার শ্রেণীর একটি উপাদান হিসাবে একটি বিষয় তৈরি করতে হবে এবং তারপরে আপনি ক্লাসের পদ্ধতি এবং ভেরিয়েবলগুলি অ্যাক্সেস করতে পারবেন যা staticসংশোধক হিসাবে ঘোষণা করা হয়নি । আপনার জাভা প্রোগ্রামটি main()ফাংশনটি শুরু করার পরে আপনি কোনও পরিবর্তনশীল বা পদ্ধতি ব্যবহার করতে পারেন যা পরিবর্তিত staticক্লাসের অংশ হিসাবে লোড হওয়ার কারণে রয়েছে।

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

import java.io.*;

class HelloWorld {
    int myInt;      // this is a class variable that is unique to each object
    static int myInt2;  // this is a class variable shared by all objects of this class

    static void main (String [] args) {
        // this is the main entry point for this Java application
        System.out.println ("Hello, World\n");
        myInt2 = 14;    // able to access the static int
        HelloWorld myWorld = new HelloWorld();
        myWorld.myInt = 32;   // able to access non-static through an object
    }
}

11

আসুন প্রথমে আপনার প্রোগ্রামটি বিশ্লেষণ করুন .. আপনার প্রোগ্রামে আপনার প্রথম পদ্ধতিটি main()এটি মনে রাখবেন এবং এটি স্থিতিশীল পদ্ধতি ... তারপরে আপনি সেই পদ্ধতির জন্য স্থানীয় ভেরিয়েবল ঘোষণা করুন (তুলনাকাউন্ট, নিম্ন, উচ্চ, ইত্যাদি)। স্থির বা অ স্থির পদ্ধতি হিসাবে বিবেচনা না করেই এই ভেরিয়েবলের সুযোগটি কেবল ঘোষিত পদ্ধতি is সুতরাং আপনি সেই পদ্ধতির বাইরে এই পরিবর্তনগুলি ব্যবহার করতে পারবেন না। এটি আপনার করা বেসিক ত্রুটি।

তারপরে আমরা পরবর্তী পয়েন্টে আসি। আপনি বলেছিলেন অচল আপনাকে হত্যা করছে। (এটি আপনাকে হত্যা করছে তবে এটি কেবল আপনার প্রোগ্রামকে জীবন দেয় !!) প্রথমে আপনাকে অবশ্যই প্রাথমিক বিষয়টি বুঝতে হবে। * স্ট্যাটিক পদ্ধতিটি কেবল স্থির পদ্ধতিটিকে কল করে এবং কেবল স্থির পরিবর্তনশীল ব্যবহার করে। * স্ট্যাটিক ভেরিয়েবল বা স্ট্যাটিক পদ্ধতি সেই শ্রেণীর কোনও ঘটনার উপর নির্ভর করে না। (অর্থাত্‍ আপনি যদি স্ট্যাটিক ভেরিয়েবলের কোনও স্থিতি পরিবর্তন করেন তবে এটি শ্রেণীর সমস্ত বস্তুর মধ্যে প্রতিফলিত হবে) * এর কারণে আপনি এটিকে শ্রেণি পরিবর্তনশীল বা শ্রেণি পদ্ধতি হিসাবে অভিহিত করেন। এবং "স্ট্যাটিক" কীওয়ার্ড সম্পর্কে আরও অনেক কিছু রয়েছে। আমি আশা করি এখন আপনি ধারণা পাবেন। প্রথমে ভেরিয়েবলের ক্ষেত্র পরিবর্তন করুন এবং এটিকে একটি স্ট্যাটিক হিসাবে ঘোষণা করুন (স্থির পদ্ধতিতে এটি ব্যবহার করতে সক্ষম হতে)।

এবং আপনার জন্য পরামর্শটি হ'ল: আপনি ভেরিয়েবল এবং স্থিতিক কার্যকারিতার সুযোগ সম্পর্কে ধারণাটি ভুল বুঝেছিলেন। সে সম্পর্কে স্পষ্ট ধারণা পান।


11

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


8

আপনার স্থিতিশীল পদ্ধতিগুলি থেকে এগুলি অ্যাক্সেস করার জন্য তাদের স্থির সদস্যের ভেরিয়েবলগুলি হওয়া দরকার:

public class MyProgram7 {
  static Scanner scan = new Scanner(System.in);
  static int compareCount = 0;
  static int low = 0;
  static int high = 0;
  static int mid = 0;  
  static int key = 0;  
  static Scanner temp;  
  static int[]list;  
  static String menu, outputString;  
  static int option = 1;  
  static boolean found = false;

  public static void main (String[]args) throws IOException {
  ...

7

এখন আপনি পদ্ধতিতে উদাহরণগুলি যুক্ত / ব্যবহার করতে পারেন

public class Myprogram7 {

  Scanner scan;
  int compareCount = 0;
  int low = 0;
  int high = 0;
  int mid = 0;  
  int key = 0;  
  Scanner temp;  
  int[]list;  
  String menu, outputString;  
  int option = 1;  
  boolean found = false;  

  private void readLine() {

  }

  private void findkey() {

  }

  private void printCount() {

  }
  public static void main(String[] args){

    Myprogram7 myprg=new Myprogram7();
    myprg.readLine();
    myprg.findkey();
    myprg.printCount();
  }
}

একটি জটিল কাঠামো হিসাবে একটি জটিল এসআরসি ফাইলটি সংশোধন করতে আমি টেমপ্লেট হিসাবে ব্যবহার করেছি এটির খুব দৃ example় উদাহরণ।
এক্সএমএন

3

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


2
  • প্রথম জিনিসটি কোনও শ্রেণীর উদাহরণ এবং ক্লাসের মধ্যেই পার্থক্যটি জানা। একটি শ্রেণি নির্দিষ্ট বৈশিষ্ট্যগুলির মডেল এবং সেই বৈশিষ্ট্যগুলির প্রসঙ্গে পুরো আচরণ models একটি উদাহরণ এই বৈশিষ্ট্যগুলির জন্য নির্দিষ্ট মান নির্ধারণ করবে।

  • স্ট্যাটিক কীওয়ার্ডের সাথে আবদ্ধ যে কোনও কিছু বর্গের কোনও উদাহরণের প্রসঙ্গে নয় বরং শ্রেণীর প্রসঙ্গে পাওয়া যায়

  • উপরোক্তভাবে একটি প্রতীক হিসাবে

    1. একটি পদ্ধতির মধ্যে পরিবর্তনশীল স্থির হতে পারে না
    2. স্থিতিশীল ক্ষেত্র এবং পদ্ধতিগুলি অবশ্যই শ্রেণীর নাম যেমন MyProgram7.main (...) ব্যবহার করে আহ্বান করতে হবে
  • স্থির ক্ষেত্র / পদ্ধতির আজীবন আপনার আবেদনের আজীবনের সমান

উদাহরণস্বরূপ বলুন, গাড়ির বৈশিষ্ট্যের রঙ রয়েছে এবং আচরণ 'গতি' প্রদর্শন করে। গাড়ির উদাহরণস্বরূপ 25kmph গতিতে একটি লাল ভোকসওয়াগেন বিটল হবে।

এখন গাড়ির স্থির সম্পত্তি হ'ল রাস্তায় চাকার সংখ্যা (4) হবে এবং এটি সমস্ত গাড়ির ক্ষেত্রে প্রযোজ্য।

আছে HTH


1

ক্লাস ফাইলগুলি লোড করার জন্য এটি ক্লাসলয়েডার দায়ী। আমরা আমাদের নিজস্ব ক্লাসগুলি লিখলে কী হয় তা দেখুন।

উদাহরণ 1:

class StaticTest {

      static int a;
      int b;
      int c;
}

এখন আমরা দেখতে পাচ্ছি যে "স্ট্যাটিকস্টেস্ট" ক্লাসটির 3 টি ক্ষেত্র রয়েছে। তবে আসলে খ, সি সদস্য ভেরিয়েবলের অস্তিত্ব নেই। তবে কেন ???? ঠিক আছে পাছে দেখুন। এখানে খ, সি হ'ল দৃষ্টান্ত পরিবর্তনশীল ince সুতরাং এখানে খ, সি এখনও কোন স্মৃতি পাচ্ছে না। সে কারণেই খ, গ এর কোন অস্তিত্ব নেই। সুতরাং শুধুমাত্র একটি অস্তিত্ব আছে। ClassLoader এর জন্য এটি সম্পর্কে একটি মাত্র তথ্য রয়েছে। ClassLoader এখনও খ, সি সনাক্ত করতে পারেনি কারণ এটি অবজেক্টটি এখনও ইনস্ট্যান্ট হয় নি।

আসুন অন্য উদাহরণটি দেখুন: উদাহরণ 2:

class StaticTest {

      public void display() {
          System.out.println("Static Test");
      }


      public static void main(String []cmd) {

             display();       
      }

}

এখন আমরা এই কোডটি সংকলন করার চেষ্টা করলে সংকলক সিই ত্রুটি দেবে। সিই: অ স্থির পদ্ধতি প্রদর্শন () কোনও স্থির প্রসঙ্গ থেকে উল্লেখ করা যায় না cannot

এখন ClassLoader এর মতো দেখতে:

class StaticTest {

      public static void main(String []cmd) {

             display();       
      }

}

উদাহরণস্বরূপ 2 সিই ত্রুটি কারণ আমরা স্থির প্রসঙ্গ থেকে অ স্থির পদ্ধতি কল করি। সুতরাং ক্লাসলয়েডার পক্ষে সংকলন সময়ে পদ্ধতি প্রদর্শন () সনাক্ত করা সম্ভব নয় o সুতরাং সংকলনের সময় ত্রুটি ঘটে।


সম্ভবত আপনি উত্তরটি শেষ করার আগে দুর্ঘটনাক্রমে আপনার উত্তর জমা দিয়েছেন? দয়া করে এটি সম্পাদনা করুন এবং অনুপস্থিত সামগ্রী যুক্ত করুন, ধন্যবাদ!
প্লামুট

1

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

স্ট্যাটিক ভেরিয়েবলগুলি চিহ্নিত করা হয় staticএবং উদাহরণ ভেরিয়েবলগুলির নির্দিষ্ট কীওয়ার্ড থাকে না।


0

সমস্ত প্রাথমিকের জন্য স্থিতিশীল কী শব্দটি সম্পর্কে ব্যাখ্যা করতে এটি কিছুটা পৃথক।
আপনি ক্লাস এবং অবজেক্টের সাথে আরও বেশি কাজ করার সময় আপনি এটি পরিষ্কারভাবে জানতে পারবেন।

| * | স্ট্যাটিক: স্ট্যাটিক আইটেমগুলিকে শ্রেণীর নামের সাথে ডাকা যেতে পারে
আপনি যদি কোডগুলি পর্যবেক্ষণ করেন তবে কিছু ফাংশনগুলি সরাসরি শ্রেণীর নামের সাথে ডাকা হয়

NamCls.NamFnc();

System.out.println();

এটি কারণ নমফএনসি এবং প্রিন্টলন তাদের আগে কী শব্দ স্থির ব্যবহার করে ঘোষণা করা হবে।

| * | নন স্ট্যাটিক: নন স্ট্যাটিক আইটেমগুলিকে ক্লাস ভেরিয়েবলের সাথে কল করা যেতে পারে
যদি এটি স্ট্যাটিক না হয়, আপনার ক্লাসের একটি ভেরিয়েবলের দরকার,
ক্লাস ভেরিয়েবলের পরে ডট লাগান এবং
তারপরে ফাংশন কল করুন।

NamCls NamObjVar = new NamCls();
NamObjVar.NamFnc();


নীচে কোড আপনাকে সুন্দরভাবে ব্যাখ্যা করে

| * | ক্লাসে স্ট্যাটিক এবং নন স্ট্যাটিক ফাংশন:

public class NamCls
{
    public static void main(String[] args)
    {
        PlsPrnFnc("Tst Txt");

        NamCls NamObjVar = new NamCls();
        NamObjVar.PrnFnc("Tst Txt");
    }

    static void PlsPrnFnc(String SrgPsgVal)
    {
        System.out.println(SrgPsgVal);
    }

    void PrnFnc(String SrgPsgVal)
    {
        System.out.println(SrgPsgVal);
    }
}


| * | স্ট্যাটিক এবং অ স্ট্যাটিক ক্লাস একটি ক্লাসের মধ্যে:

public class NamCls
{
    public static void main(String[] args)
    {
        NamTicCls NamTicVaj = new NamTicCls();
        NamTicVaj.PrnFnc("Tst Txt");

        NamCls NamObjVar = new NamCls();
        NamNicCls NamNicVar = NamObjVar.new NamNicCls();
        NamNicVar.PrnFnc("Tst Txt");
    }

    static class NamTicCls
    {
        void PrnFnc(String SrgPsgVal)
        {
            System.out.println(SrgPsgVal);
        }
    }

    class NamNicCls
    {
        void PrnFnc(String SrgPsgVal)
        {
            System.out.println(SrgPsgVal);
        }
    }
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.