जावा में, किसी अन्य वर्ग के अंदर एक वर्ग . को परिभाषित करना संभव है , ऐसी कक्षाओं को नेस्टेड कक्षाएं . कहा जाता है . हम एक्सेस संशोधक जैसे निजी, सार्वजनिक, संरक्षित या डिफ़ॉल्ट . का उपयोग कर सकते हैं आंतरिक कक्षाओं . के लिए और डिफ़ॉल्ट या सार्वजनिक बाहरी वर्ग . के लिए एक्सेस संशोधक ।
नेस्टेड कक्षाएं दो प्रकार की होती हैं जावा में परिभाषित हैं।
- स्टेटिक नेस्टेड क्लास
- नॉन-स्टेटिक नेस्टेड क्लास
स्टेटिक नेस्टेड क्लास
- हम एक आंतरिक वर्ग को स्थैतिक के रूप में परिभाषित कर सकते हैं, इसलिए इस प्रकार की कक्षाओं को स्थिर नेस्टेड वर्ग कहा जाता है।
- द नेस्टेड क्लास स्थिर कीवर्ड . के साथ परिभाषित किया गया है , इसलिए इस प्रकार की नेस्टेड कक्षाएं बाहरी वर्ग के उदाहरण के साथ कोई संबंध साझा नहीं करती हैं ।
- एक स्थिर नेस्टेड वर्ग s स्थिर सदस्यों . तक पहुंचने में सक्षम हो सकता है हमारी कक्षा के।
उदाहरण
class Car { static class Wheel { public void rotate() { System.out.println("The wheel is rotating"); } } } public class Test { public static void main(String args[]) { Car.Wheel wheel = new Car.Wheel(); wheel.rotate(); } }
आउटपुट
The wheel is rotating
नॉन-स्टेटिक नेस्टेड क्लास
- एक गैर स्थैतिक नेस्टेड वर्ग परोक्ष रूप से आंतरिक वर्ग . के रूप में जाना जाता है जावा में।
- द आंतरिक वर्ग बाहरी वर्ग की वस्तु . से संबद्ध है . इसलिए आंतरिक वर्ग को बाहरी वर्ग के अन्य चर और विधियों की तरह माना जाता है।
- द आंतरिक वर्ग बाहरी वर्ग वस्तु या उदाहरण के साथ जुड़ा हुआ है, इसलिए हम स्थिर चर घोषित नहीं कर सकते आंतरिक कक्षा के अंदर।
उदाहरण
public class OuterClassTest { private int a = 10; public void innerClassInstance() { InnerClassTest inner = new InnerClassTest(); inner.outerObject(); } public static void main(String args[]) { OuterClassTest outer = new OuterClassTest(); outer.innerClassInstance(); } class InnerClassTest { public void outerObject() { System.out.println("Outer Value of a is: " + a); } } }
आउटपुट
Outer Value of a is: 10