জাভা স্ট্যাটিক ক্লাস


946

static classজাভাতে কি কিছু আছে ?

এরকম শ্রেণীর অর্থ কী? স্ট্যাটিক ক্লাসের সমস্ত পদ্ধতি কি staticখুব বেশি হওয়া দরকার ?

এটি অন্য উপায়েও প্রয়োজন, যে কোনও শ্রেণিতে যদি সমস্ত স্থিতিশীল পদ্ধতি থাকে তবে শ্রেণিটি কি স্থির হবে?

স্ট্যাটিক ক্লাস কি জন্য ভাল?


4
আপনার আগ্রহী হতে পারে স্ট্যাকওভারফ্লো
ইশতার

স্ট্যাটিক ক্লাসগুলি মূলত একসাথে শ্রেণিবদ্ধ করার জন্য ব্যবহৃত হয়।
রকিংডেভ

উত্তর:


846

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

  • আপনার ক্লাসটি ঘোষণা করুন final- ক্লাসের বর্ধন রোধ করে যেহেতু একটি স্ট্যাটিক শ্রেণি প্রসারিত করা কোনও অর্থবোধ করে না
  • কনস্ট্রাক্টর তৈরি করুন private- ক্লায়েন্ট কোড দ্বারা তাত্ক্ষণিকতা প্রতিরোধ করে কারণ এটি একটি স্ট্যাটিক ক্লাস ইনস্ট্যান্ট করার কোনও মানে হয় না
  • করুন সব সদস্য ও শ্রেণী কার্যাবলী static- যেহেতু বর্গ instantiated করা যাবে না কোন দৃষ্টান্ত পদ্ধতি বা বলা যেতে পারে দৃষ্টান্ত ক্ষেত্র অ্যাক্সেস
  • নোট করুন যে সংকলক আপনাকে উদাহরণ (অ স্থিতিশীল) সদস্য ঘোষণার হাত থেকে বাধা দেবে না। সমস্যাটি কেবল তখনই প্রদর্শিত হবে যদি আপনি উদাহরণ সদস্যকে কল করার চেষ্টা করেন

উপরে থেকে পরামর্শের জন্য সহজ উদাহরণ:

public class TestMyStaticClass {
     public static void main(String []args){
        MyStaticClass.setMyStaticMember(5);
        System.out.println("Static value: " + MyStaticClass.getMyStaticMember());
        System.out.println("Value squared: " + MyStaticClass.squareMyStaticMember());
        // MyStaticClass x = new MyStaticClass(); // results in compile time error
     }
}

// A top-level Java class mimicking static class behavior
public final class MyStaticClass {
    private MyStaticClass () { // private constructor
        myStaticMember = 1;
    }
    private static int myStaticMember;
    public static void setMyStaticMember(int val) {
        myStaticMember = val;
    }
    public static int getMyStaticMember() {
        return myStaticMember;
    }
    public static int squareMyStaticMember() {
        return myStaticMember * myStaticMember;
    }
}

স্ট্যাটিক ক্লাস কি ভাল? স্ট্যাটিক ক্লাসের একটি ভাল ব্যবহার ওয়ান অফ, ইউটিলিটি এবং / বা লাইব্রেরি ক্লাসগুলি সংজ্ঞায়িত করা যেখানে ইনস্ট্যান্টেশনটি কোনও অর্থ দেয় না। একটি দুর্দান্ত উদাহরণ ম্যাথ ক্লাস যা পিআই এবং ই এর মতো কিছু গাণিতিক ধ্রুবক ধারণ করে এবং কেবল গাণিতিক গণনা সরবরাহ করে। এই জাতীয় ক্ষেত্রে তাত্ক্ষণিক প্রয়োজন অপ্রয়োজনীয় এবং বিভ্রান্তিকর হবে। দেখুন Mathশ্রেণী এবং সোর্স কোড । লক্ষ্য করুন যে এটি রয়েছে finalএবং এর সদস্যরা সবাই static। যদি জাভা শীর্ষ স্তরের শ্রেণি ঘোষণার অনুমতি দেয় staticতবে গণিত শ্রেণিটি অবশ্যই স্থির ছিল।


34
Fooকেবল staticপদ্ধতি সহ একটি শ্রেণি একই নয়static class Foo
ক্রেগব

12
@ এভেরলর: যদি কোনও শ্রেণি চূড়ান্ত ঘোষণা করা হয় তবে এর পদ্ধতিগুলি স্বয়ংক্রিয়ভাবে (কার্যকরভাবে) চূড়ান্ত হয়। এটি কারণ একটি চূড়ান্ত শ্রেণি সাবক্ল্যাস করা যায় না এবং সুতরাং এর পদ্ধতিগুলি ওভাররাইড করা যায় না (অর্থাত্ কার্যকরভাবে চূড়ান্ত হয়)। docs.oracle.com/javase/tutorial/java/IandI/final.html
jwayne

30
এই উত্তরটি সম্ভবত ওপি বলতে বোঝায়, তবে এটি (বর্তমানে) জাভা স্ট্যাটিক ক্লাসগুলি ব্যাখ্যা করে না এবং তাই প্রশ্নের কোনও উত্তর দেয় না! জাভাতে স্থির শ্রেণীর অর্থ কী তা বোঝার চেষ্টা করতে এখানে আসার লোকদের পক্ষে এটি খুব খারাপ।
টম

12
@ জবয়: জাভাতে "স্ট্যাটিক ক্লাস" এর মতো একটি বিষয় রয়েছে, যা এই প্রশ্নটি সম্পর্কে, তবে এই উত্তরটি মোটেই ব্যাখ্যা করে না। পরিবর্তে, এটি জাভাতে কীভাবে সিমুলেট করা যায় তার উত্তরটি "স্ট্যাটিক শ্রেণি" বলে - কিন্তু জাভাতে একটি "স্ট্যাটিক ক্লাস" কী তা নয় ! (সম্ভবত এটিকে অন্য কোনও ভাষায় (স্ট্যাটাস ক্লাস) বলা হলেও জাভা স্ট্যাটিক ক্লাস সম্পর্কে শিখতে আসা লোকেরা বিভ্রান্ত ও বিভ্রান্ত হবে))
টম

4
আপনার স্পষ্টভাবে উল্লেখ করা উচিত যে প্রাইভেট মাইস্ট্যাটিক ক্লাস () {// প্রাইভেট কনস্ট্রাক্টর মাইস্ট্যাটিক মেম্বার = 1; কনস্ট্রাক্টরকে ডাকা হবে না বলে} এর কোনও প্রভাব নেই। তবে এটি বিন্দু নয়। জাভাতে স্থির অভ্যন্তরীণ শ্রেণীর ব্যবহার এবং তাদের ইউটিলিটি বা যুক্ত মূল্য সম্পর্কে আমি এখনও খুব বিভ্রান্ত।
মোল্ডোভেন

314

ঠিক আছে, জাভাতে "স্ট্যাটিক নেস্টেড ক্লাস" রয়েছে, তবে সেগুলি সি-এর স্ট্যাটিক ক্লাসগুলির মতো নয়, যদি আপনি সেখান থেকে আসেন তবে। একটি স্ট্যাটিক নেস্টেড ক্লাসটি কেবলমাত্র একটি যা স্পষ্টভাবে বাইরের শ্রেণীর উদাহরণের সাথে উল্লেখ করে না।

স্ট্যাটিক নেস্টেড ক্লাসে উদাহরণ পদ্ধতি এবং স্থির পদ্ধতি থাকতে পারে।

জাভাতে কোনও শীর্ষ-স্তরের স্ট্যাটিক শ্রেণির মতো জিনিস নেই।


12
জাভাতে স্থির নেস্টেড বর্গ কেন উদাহরণ পদ্ধতিগুলিকে অনুমতি দেয়? এই ধরনের শ্রেণিতে উদাহরণ পদ্ধতি ব্যবহার কী?
গীক

19
@ গীক: আপনি কি আমার উত্তর পড়েছেন? দ্বিতীয় বাক্যটি মনোযোগ সহকারে পড়ুন। আপনি স্ট্যাটিক ক্লাসগুলির উদাহরণ পদ্ধতিগুলি কেন সক্ষম করতে চান না ? সর্বোপরি আপনি সেগুলির উদাহরণ তৈরি করতে পারেন।
জন স্কিটি

17
@ গীক: হ্যাঁ, এটি সম্পূর্ণরূপে অনুমোদিত। আপনার "বোঝার" যে স্ট্যাটিক ক্লাসগুলি ইউটিলিটি ক্লাসগুলি মূলত ভুল। জাভাতে স্থির ক্লাসগুলি মোটেই বোঝায় না।
জন স্কিটি

14
@ গীক: হ্যাঁ ঠিক যেমনটি আমি আমার উত্তরে লিখেছিলাম: "একটি স্থির নেস্টেড বর্গ কেবলমাত্র এমন একটি, যা স্পষ্টভাবে বাইরের শ্রেণীর উদাহরণের সাথে উল্লেখ করে না।"
জন স্কিটি

6
@KhurramAli: আপনি বলতে চাচ্ছি পরোক্ষভাবে ? কীওয়ার্ডগুলি ঘোষণার সময় আপনি কীওয়ার্ডটি ব্যবহার করবেন না তা প্রদত্ত তারা অবশ্যই স্পষ্টভাবে স্থির নয় static। এগুলি স্পষ্টতই স্থির যে কোনওটি নির্মাণের জন্য আপনার আর কোনও কিছুর রেফারেন্সের প্রয়োজন নেই। ব্যক্তিগতভাবে আমি স্থির / অ-স্থিতিশীল পরিভাষাটি যাইহোক নেস্টেড ক্লাসগুলির জন্য কিছুটা অদ্ভুত দেখতে পাই ... আমার মনে হয় যে আচরণটি কী তা নিয়ে কথা বলা সহজ হবে ler
জন স্কিটি

157

একটি স্ট্যাটিক নেস্টেড ক্লাস রয়েছে , এই [স্ট্যাটিক নেস্টেড] ক্লাসটি নিজেই ইনস্ট্যান্ট করার জন্য বেষ্টনকারী শ্রেণীর কোনও উদাহরণের প্রয়োজন নেই।

এই শ্রেণিগুলি [স্থির নেস্টেডরা] কেবল ঘেরের ক্লাসের স্থিতিশীল সদস্যদের অ্যাক্সেস করতে পারে [যেহেতু এটি বদ্ধ শ্রেণীর উদাহরণগুলির কোনও উল্লেখ নেই ...]

কোড নমুনা:

public class Test { 
  class A { } 
  static class B { }
  public static void main(String[] args) { 
    /*will fail - compilation error, you need an instance of Test to instantiate A*/
    A a = new A(); 
    /*will compile successfully, not instance of Test is needed to instantiate B */
    B b = new B(); 
  }
}

1
সুতরাং আমরা কি বলতে পারি যে আমরা জনসাধারণের প্রয়োজন ছাড়াই তাদের তাত্ক্ষণিকভাবে অভ্যন্তরীণ স্থিতিশীল ক্লাসগুলি ব্যবহার করতে পারি?
মোডোভোয়ান

@ মলদোভান স্থির প্রসঙ্গ (যেমন প্রধান) থেকে তাদের ইনস্ট্যান্ট করার জন্য আমরা অভ্যন্তরীণ স্ট্যাটিক ক্লাস ব্যবহার করি । আমি মনে করি না এটির দৃশ্যমানতার সাথে কিছু করার আছে।
মাইকেল ডারস্ট

2
@ মলডোভেন স্ট্যাটিক / অ স্ট্যাটিক দৃশ্যমানতার জন্য অরথোগোনাল। স্ট্যাটিক বা অ স্ট্যাটিকের সাথে আপনার কোনও ধরণের দৃশ্যমানতা থাকতে পারে। মুল বক্তব্যটি হল, অভ্যন্তরটি তৈরি করার জন্য আপনার কি ঘেরের বর্গের উদাহরণ প্রয়োজন?
amit 3'19

103

হ্যাঁ জাভাতে স্থির নেস্টেড ক্লাস রয়েছে। আপনি যখন নেস্টেড ক্লাসের স্ট্যাটিক ঘোষণা করেন, এটি স্বয়ংক্রিয়ভাবে স্ট্যান্ড একা ক্লাসে পরিণত হয় যা এটি বাহ্যিক শ্রেণীর সাথে সম্পর্কিত না করে ইনস্ট্যান্ট করা যায়।

উদাহরণ:

public class A
{

 public static class B
 {
 }
}

কারণ class Bস্ট্যাটিক আপনি স্পষ্টভাবে instantiate যেমন করতে পারেন ঘোষিত হয়:

B b = new B();

class Bএটিকে একা দাঁড় করানোর জন্য যদি স্থির হিসাবে ঘোষিত না হয় তবে নোট করুন , উদাহরণস্বরূপ অবজেক্ট কলটি এটির মতো দেখাবে:

A a= new A();
B b = a.new B();

7
নোট করুন যে আপনি অন-স্ট্যাটিক ক্লাসটি নিয়মিত ইনস্ট্যান্ট করতে পারেন যেমন B b = new B();আপনি যদি ক্লাস থেকে Aনিজেই ইনস্ট্যান্ট করার চেষ্টা করছেন ।
মুহাম্মদ রেফায়াত

33

এর ভিতরে থাকা সদস্যদের classঘোষিত হলে কী ঘটছে static..? সদস্যদের তাত্ক্ষণিকভাবে ছাড়াই অ্যাক্সেস করা যেতে পারে class। সুতরাং বাইরের শ্রেণি (শীর্ষ স্তরের শ্রেণি) তৈরির staticকোনও অর্থ নেই। সুতরাং এটি অনুমোদিত নয়।

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

public class A {
    public static class B {

    }
}

এখন, আলাদা ক্লাসের ভিতরে Cক্লাসের Bউদাহরণ তৈরি না করেই ক্লাস অ্যাক্সেস করা যায় A

public class C {
    A.B ab = new A.B();
}

staticক্লাসে non-staticসদস্যও থাকতে পারে। কেবল ক্লাস স্থির হয়।

তবে staticকীওয়ার্ডটি ক্লাস থেকে মুছে ফেলা হলে Bউদাহরণ না দিয়ে সরাসরি অ্যাক্সেস করা যায় না A

public class C {
    A a = new A();
    A.B ab = a. new B();
}

তবে আমরা staticকোনও non-staticঅভ্যন্তরীণ শ্রেণীর ভিতরে সদস্য থাকতে পারি না ।


আমরা কি কোনও স্থির শ্রেণি ইনস্ট্যান্ট করতে পারি বা এটি কোনও অর্থবোধ করে?
সুপুন বিজরথনে

6
অন্যান্য ভাষার মতো নয়, staticজাভাতেও এর এক অর্থ রয়েছে। যদি staticকোনও ক্লাসে থাকে তবে এর অর্থ that শ্রেণিকে তাত্ক্ষণিক না করে জিনিসটি অ্যাক্সেস করা যায়। এটি ইনস্ট্যান্স তৈরি করা বা না করা সম্পর্কে কিছুই বলে না ..
রমেশ-এক্স

দুঃখিত স্ট্যাকওভারফ্লো! এক্ষেত্রে থ্যাঙ্ক ইউ রমেশ-এক্স বলতে এড়াতে পারি না! স্থির অভ্যন্তরীণ ক্লাস এবং অভ্যন্তরীণ ক্লাস সম্পর্কে আমি প্রায় অবাক হয়েছি You
মোল্ডোভান

আপনি 'স্ট্যাটিক হিসাবে অভ্যন্তরীণ ক্লাসগুলি সেট করতে পারবেন না'। এটি শর্তে একটি বৈপরীত্য । নেস্টেড বর্গ হয় অভ্যন্তরীণ বা স্থির হয়।
ব্যবহারকারী 207421

13

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

জোশুয়া ব্লুচের "কার্যকর জাভা - দ্বিতীয় সংস্করণ" থেকে উদ্ধৃত অংশ (যা বিস্তৃত জাভা শৈলীর অন্যতম সেরা গাইড হিসাবে উপলব্ধ হিসাবে বিবেচিত):

রিলিজ ১.৫ হিসাবে, সিঙ্গলেটগুলি বাস্তবায়নের জন্য তৃতীয় পদ্ধতি রয়েছে। কেবল একটি উপাদান দিয়ে একটি এনাম টাইপ করুন:

// Enum singleton - the preferred approach
public enum Elvis {
    INSTANCE;
    public void leaveTheBuilding() { ... }
}

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

ব্লচ, জোশুয়া (২০০৮-০৫-০৮) কার্যকর জাভা (জাভা সিরিজ) (পৃষ্ঠা 18)। পিয়ারসন শিক্ষা.

আমি মনে করি বাস্তবায়ন এবং ন্যায়সঙ্গততা বেশ স্ব-বর্ণনামূলক।


6
একটি একক বাস্তবায়ন করার ভাল উপায়। দুর্ভাগ্যক্রমে, প্রশ্নটি সিঙ্গলটনের নয়, এটি স্থির শ্রেণির সম্পর্কে
ডেভিড এসএন

1
জাভাতে "স্ট্যাটিক" কীওয়ার্ডটির পরিবর্তে অনন্য ব্যাখ্যা রয়েছে। দেখে মনে হচ্ছে ওপি সি # থেকে আসছে যেখানে "স্ট্যাটিক ক্লাস" জাভাতে থাকা একটি সিঙ্গেলনের সমতুল্য। প্রশ্নের এই ব্যাখ্যাটি পরিষ্কার করার জন্য আমি আমার উত্তর আপডেট করেছি।
বেনেট হুবার

1
এসি # স্ট্যাটিক ক্লাস কোনও একক নয়। একটি সিঙ্গলটন উদাহরণ একটি বস্তু এবং এটি একটি ইন্টারফেস প্রয়োগ করতে পারে যার অর্থ এটি নির্ভরতা ইনজেকশনে অংশ নিতে পারে এবং উপহাস করা যায়। এসি # স্ট্যাটিক শ্রেণি কোনও ইন্টারফেস প্রয়োগ করতে পারে না বা কোনওভাবে ইনজেকশনের ব্যবস্থা করতে পারে না, এবং সি ফাংশনগুলির একগুচ্ছের খুব কাছাকাছি, এবং অবশ্যই এক্সটেনশন পদ্ধতির অনুমতি দেয়।
নভেটেরটা

13

জাভাতে কোনও শ্রেণি স্থির থাকতে পারে?

উত্তর হ্যাঁ , আমরা জাভাতে স্ট্যাটিক ক্লাস রাখতে পারি। জাভাতে, আমাদের স্ট্যাটিক ইনস্ট্যান্স ভেরিয়েবলের পাশাপাশি স্ট্যাটিক পদ্ধতি এবং স্ট্যাটিক ব্লকও রয়েছে । ক্লাসগুলি জাভাতেও স্থির করা যায়।

জাভাতে, আমরা শীর্ষ-স্তরের (বহিরাগত) শ্রেণীর স্ট্যাটিক করতে পারি না। কেবল নেস্টেড ক্লাসগুলি অচল থাকতে পারে।

স্ট্যাটিক নেস্টেড ক্লাস বনাম অ স্ট্যাটিক নেস্টেড ক্লাস

1) নেস্টেড স্ট্যাটিক ক্লাসে আউটার ক্লাসের রেফারেন্সের প্রয়োজন হয় না, তবে নন-স্ট্যাটিক নেস্টেড ক্লাস বা ইনার ক্লাসে আউটার ক্লাসের রেফারেন্সের প্রয়োজন হয়।

2) অভ্যন্তর শ্রেণি (বা অ স্থিত নেস্টেড বর্গ) বহিরাগত শ্রেণির স্থির এবং অ স্থিত উভয় সদস্যকেই অ্যাক্সেস করতে পারে। একটি স্থিতিশীল শ্রেণি বহিরাগত শ্রেণীর অ স্থির সদস্যদের অ্যাক্সেস করতে পারে না। এটি কেবল বহিরাগত শ্রেণীর স্থির সদস্যদের অ্যাক্সেস করতে পারে।

এখানে দেখুন: https://docs.oracle.com/javase/tutorial/java/javaOO/nested.html


এছাড়াও অভ্যন্তরীণ 'অ-স্থিতিশীল' শ্রেণি স্থির ক্ষেত্র বা পদ্ধতিগুলি ঘোষণা করতে পারে না
মিঃকিটি

8

বহিরঙ্গন ক্লাস স্থির হতে পারে না, তবে নেস্টেড / ইনার ক্লাস হতে পারে। এটি বাহ্যিক শ্রেণীর কোনও উদাহরণ তৈরি না করেই আপনাকে নীড়যুক্ত / অভ্যন্তর শ্রেণি ব্যবহার করতে সহায়তা করে।



1

সরল ভাষায়, জাভা কোনও শ্রেণীর ঘোষণাকে কেবলমাত্র অভ্যন্তরীণ শ্রেণির জন্য স্থিতিশীল বলে ঘোষণা করে তবে শীর্ষ স্তরের শ্রেণির জন্য নয়।

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

অভ্যন্তরীণ শ্রেণি: একটি শীর্ষ স্তরের শ্রেণীর অভ্যন্তর শ্রেণিগুলিকে অভ্যন্তরীণ শ্রেণি বলা হয়, যা মূলত নেস্টেড ক্লাসগুলির ধারণা। অভ্যন্তরীণ ক্লাস স্থির হতে পারে । অভ্যন্তরীণ শ্রেণিগুলিকে স্থিতিশীল করার ধারণাটি হ'ল শীর্ষ স্তরের শ্রেণীর অবজেক্টটি ইনস্ট্যান্ট না করে অভ্যন্তরীণ শ্রেণীর অবজেক্টগুলি ইনস্ট্যান্ট করার সুবিধা গ্রহণ করা। স্থির পদ্ধতি এবং ভেরিয়েবলগুলি কোনও শীর্ষ স্তরের শ্রেণির অভ্যন্তরে কাজ করে ঠিক ঠিক একইভাবে এটি।

সুতরাং জাভা অভ্যন্তরীণ স্তরের স্তরে স্থিত ক্লাস সমর্থন করে (নেস্টেড ক্লাসে)

এবং জাভা শীর্ষ স্তরের শ্রেণিতে স্ট্যাটিক ক্লাস সমর্থন করে না।

আমি আশা করি জাভাতে স্থির শ্রেণীর বুনিয়াদি বোঝার জন্য এটি প্রশ্নের সহজ সমাধান দেয়।



0

জাভাতে স্ট্যাটিক পদ্ধতি রয়েছে যা ক্লাসগুলির সাথে সম্পর্কিত (যেমন java.lang.Math এর কেবল স্থির পদ্ধতি রয়েছে), তবে শ্রেণি নিজেই স্থির নয়।


0

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

public class Outer {
   static class Nested_Demo {
      public void my_method() {
          System.out.println("This is my nested class");
      }
   }
public static void main(String args[]) {
      Outer.Nested_Demo nested = new Outer.Nested_Demo();
      nested.my_method();
   }
}

আপনি staticকীওয়ার্ডটি কোনও শ্রেণীর সাথে ব্যবহার করতে পারবেন না যদি না এটি নেস্টেড ক্লাস হয়। 'স্ট্যাটিক ইনার' শর্তে একটি বিপরীত
ব্যবহারকারী 207421

0

একটি স্থির পদ্ধতির অর্থ জনসাধারণের বিপরীতে শ্রেণীর কোনও অবজেক্ট তৈরি না করেই এটি অ্যাক্সেস করা যায়:

public class MyClass {
   // Static method
   static void myStaticMethod() {
      System.out.println("Static methods can be called without creating objects");
   }

  // Public method
  public void myPublicMethod() {
      System.out.println("Public methods must be called by creating objects");
   }

  // Main method
  public static void main(String[ ] args) {
      myStaticMethod(); // Call the static method
    // myPublicMethod(); This would output an error

    MyClass myObj = new MyClass(); // Create an object of MyClass
    myObj.myPublicMethod(); // Call the public method
  }
}

প্রশ্নের উত্তর দেয় না।
ব্যবহারকারী 207421

-1

সমস্ত ভাল উত্তর, তবে আমি java.util. সংগ্রহের কোনও উল্লেখ দেখতে পাইনি যা তাদের স্থিতিশীল ফ্যাক্টর পদ্ধতির জন্য টন স্থিতিশীল অভ্যন্তর শ্রেণির ব্যবহার করে। সুতরাং একই যুক্ত।

Java.util. সংগ্রহ থেকে একটি উদাহরণ যুক্ত করা হচ্ছে যার একাধিক স্থিতিশীল অভ্যন্তর শ্রেণি রয়েছে। অভ্যন্তরীণ ক্লাসগুলি গ্রুপ কোডে দরকারী যা বাইরের শ্রেণীর মাধ্যমে অ্যাক্সেস করা দরকার।

/**
 * @serial include
 */
static class UnmodifiableSet<E> extends UnmodifiableCollection<E>
                             implements Set<E>, Serializable {
    private static final long serialVersionUID = -9215047833775013803L;

    UnmodifiableSet(Set<? extends E> s)     {super(s);}
    public boolean equals(Object o) {return o == this || c.equals(o);}
    public int hashCode()           {return c.hashCode();}
}

জাভা.ইটি.টি. সংগ্রহ সংগ্রহ শ্রেণিতে স্থিতিশীল ফ্যাক্টর পদ্ধতিটি এখানে

public static <T> Set<T> unmodifiableSet(Set<? extends T> s) {
    return new UnmodifiableSet<>(s);
}


আপনার মন্তব্য পাইনি? তুমি কি বিস্তারিত বলতে পারো? আপনার মন্তব্য বোঝার চেষ্টা করছি।
জে রাজপুত
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.