जावा नेस्टेटिक क्लास

इस ट्यूटोरियल में, आप उदाहरणों की मदद से नेस्टेड स्टैटिक क्लास के बारे में जानेंगे। आप यह भी सीखेंगे कि आंतरिक कक्षाओं से स्थिर कक्षाएं कैसे भिन्न होती हैं।

जैसा कि पिछले ट्यूटोरियल्स में सीखा गया है, हम जावा में किसी अन्य क्लास के अंदर क्लास कर सकते हैं। ऐसी कक्षाओं को नेस्टेड क्लास के रूप में जाना जाता है। जावा में, नेस्टेड वर्ग दो प्रकार के होते हैं:

  • नॉन-स्टैटिक क्लास (इनर क्लास)
  • नस्लीय स्थिर वर्ग।

हमने पिछले ट्यूटोरियल में पहले से ही आंतरिक कक्षाओं पर चर्चा की है। यदि आप आंतरिक कक्षाओं के बारे में सीखना चाहते हैं, तो जावा नेस्टेड क्लास पर जाएँ।

इस ट्यूटोरियल में, हम नेस्टेड स्टैटिक क्लासेस के बारे में जानेंगे।

जावा नेस्टेटिक क्लास

हम staticअपने नेस्टेड क्लास को स्थिर बनाने के लिए कीवर्ड का उपयोग करते हैं ।

नोट: जावा में, केवल नेस्टेड वर्गों को स्थिर होने की अनुमति है।

नियमित कक्षाओं की तरह, स्थिर नेस्टेड वर्गों में स्थिर और गैर-स्थिर क्षेत्र और विधियाँ शामिल हो सकती हैं। उदाहरण के लिए,

 Class Animal ( static class Mammal ( // static and non-static members of Mammal ) // members of Animal ) 

स्टेटिक नेस्टेड कक्षाएं बाहरी वर्ग से जुड़ी होती हैं।

स्थिर नेस्टेड वर्ग तक पहुँचने के लिए, हमें बाहरी वर्ग की वस्तुओं की आवश्यकता नहीं है।

उदाहरण: स्टेटिक नेस्टेड क्लास

 class Animal ( // inner class class Reptile ( public void displayInfo() ( System.out.println("I am a reptile."); ) ) // static class static class Mammal ( public void displayInfo() ( System.out.println("I am a mammal."); ) ) ) class Main ( public static void main(String() args) ( // object creation of the outer class Animal animal = new Animal(); // object creation of the non-static class Animal.Reptile reptile = animal.new Reptile(); reptile.displayInfo(); // object creation of the static nested class Animal.Mammal mammal = new Animal.Mammal(); mammal.displayInfo(); ) ) 

आउटपुट

मैं एक सरीसृप हूं। मैं एक स्तनधारी प्राणी हूं।

उपरोक्त कार्यक्रम में, हमारे पास दो नेस्टेड क्लास स्तनपायी और एक क्लास एनिमल के अंदर सरीसृप है।

गैर-स्थिर वर्ग सरीसृप की एक वस्तु बनाने के लिए, हमने उपयोग किया है

 Animal.Reptile reptile = animal.new Reptile() 

स्थैतिक वर्ग स्तनपायी की एक वस्तु बनाने के लिए, हमने उपयोग किया है

 Animal.Mammal mammal = new Animal.Mammal() 

बाहरी वर्ग के सदस्यों तक पहुँचना

जावा में, स्थिर नेस्टेड कक्षाएं बाहरी वर्ग के साथ जुड़ी हुई हैं। यही कारण है कि स्थिर नेस्टेड कक्षाएं केवल बाहरी वर्ग के वर्ग सदस्यों (स्थिर क्षेत्रों और विधियों) तक पहुंच सकती हैं।

आइए देखें कि अगर हम गैर-स्थिर क्षेत्रों और बाहरी वर्ग के तरीकों का उपयोग करने की कोशिश करेंगे तो क्या होगा।

उदाहरण: गैर-स्थैतिक सदस्यों तक पहुँचना

 class Animal ( static class Mammal ( public void displayInfo() ( System.out.println("I am a mammal."); ) ) class Reptile ( public void displayInfo() ( System.out.println("I am a reptile."); ) ) public void eat() ( System.out.println("I eat food."); ) ) class Main ( public static void main(String() args) ( Animal animal = new Animal(); Animal.Reptile reptile = animal.new Reptile(); reptile.displayInfo(); Animal.Mammal mammal = new Animal.Mammal(); mammal.displayInfo(); mammal.eat(); ) ) 

आउटपुट

Main.java:28: त्रुटि: प्रतीक स्तनपायी नहीं मिल सकता (); प्रतीक: विधि खाने () स्थान: प्रकार स्तनपायी के चर स्तनपायी 1 त्रुटि संकलक बाहर निकलने की स्थिति 1

उपरोक्त उदाहरण में, हमने eat()क्लास एनिमल के अंदर एक नॉन-स्टैटिक तरीका बनाया है ।

अब, यदि हम eat()ऑब्जेक्ट स्तनपायी का उपयोग करने का प्रयास करते हैं, तो संकलक एक त्रुटि दिखाता है।

यह इसलिए है क्योंकि स्तनपायी एक स्थिर वर्ग की वस्तु है और हम स्थैतिक कक्षाओं से गैर-स्थैतिक तरीकों तक नहीं पहुंच सकते हैं।

स्टेटिक टॉप-लेवल क्लास

जैसा कि ऊपर उल्लेख किया गया है, केवल नेस्टेड कक्षाएं स्थिर हो सकती हैं। हमारे पास स्थैतिक शीर्ष-स्तरीय कक्षाएं नहीं हो सकती हैं।

आइए देखें कि अगर हम शीर्ष स्तर के वर्ग को स्थिर बनाने की कोशिश करेंगे तो क्या होगा।

 static class Animal ( public static void displayInfo() ( System.out.println("I am an animal"); ) ) class Main ( public static void main(String() args) ( Animal.displayInfo(); ) ) 

आउटपुट

 Main.java:1: त्रुटि: संशोधक स्थैतिक की अनुमति नहीं है यहाँ स्थिर वर्ग पशु (1 त्रुटि संकलक निकास स्थिति 1) 

उपरोक्त उदाहरण में, हमने एक स्थिर वर्ग पशु बनाने का प्रयास किया है। चूंकि जावा स्थैतिक शीर्ष-स्तरीय वर्ग की अनुमति नहीं देता है, इसलिए हमें एक त्रुटि मिलेगी।

दिलचस्प लेख...