स्टॅटिक नेस्टेड क्लासेस - १

"म्हणून, विषय क्रमांक दोन हा स्टॅटिक नेस्टेड क्लासेस आहे. लक्षात ठेवा की नॉन-स्टॅटिक नेस्टेड क्लासेसना इनर क्लासेस म्हणतात .

"नेस्टेड क्लासच्या घोषणेच्या संदर्भात स्टॅटिक शब्दाचा अर्थ काय आहे याबद्दल आपले डोके गुंडाळूया. तुम्हाला काय वाटते?"

"जर व्हेरिएबल स्टॅटिक म्हणून घोषित केले असेल, तर व्हेरिएबलची फक्त एक प्रत अस्तित्वात आहे. तर, जर नेस्टेड क्लास स्टॅटिक असेल, तर याचा अर्थ तुम्ही त्या क्लासचा फक्त एक ऑब्जेक्ट तयार करू शकता का?"

" स्टॅटिक हा शब्द इथे गोंधळात टाकू देऊ नका . हे खरे आहे की जर व्हेरिएबल स्टॅटिक म्हणून घोषित केले असेल, तर व्हेरिएबलची फक्त एक प्रत असते. परंतु स्टॅटिक नेस्टेड क्लास या संदर्भात स्टॅटिक पद्धतीसारखा असतो. क्लास डिक्लेरेशनच्या आधी स्टॅटिक हा शब्द सूचित करतो की क्लास त्याच्या बाह्य क्लासच्या वस्तूंचे संदर्भ संग्रहित करत नाही."

"अहो. सामान्य पद्धतींमध्ये ऑब्जेक्टचा संदर्भ अस्पष्टपणे साठवला जातो, परंतु स्थिर पद्धतींमध्ये नाही. हे स्टॅटिक क्लासेसच्या बाबतीतही असेच आहे, मी बरोबर आहे का, एली?"

"नक्कीच. तुमची द्रुत समज प्रशंसनीय आहे. स्टॅटिक नेस्टेड क्लासेसमध्ये त्यांच्या बाह्य वर्गातील वस्तूंचे छुपे संदर्भ नसतात."

class Zoo
{
 private static int count = 7;
 private int mouseCount = 1;

 public static int getAnimalCount()
 {
  return count;
 }

 public int getMouseCount()
 {
  return mouseCount;
 }

 public static class Mouse
 {
  public Mouse()
  {
  }
   public int getTotalCount()
  {
   return count + mouseCount; // Compilation error.
  }
 }
}

"या उदाहरणाचे काळजीपूर्वक पुनरावलोकन करूया."

"स्टॅटिक getAnimalCount पद्धत कोणते व्हेरिएबल ऍक्सेस करू शकते?"

"फक्त स्थिर. कारण ती एक स्थिर पद्धत आहे."

"गेटमाऊसकाउंट पद्धतीमध्ये कोणते व्हेरिएबल्स प्रवेश करू शकतात?"

"स्थिर आणि नॉन-स्टॅटिक दोन्ही. यात प्राणीसंग्रहालयाच्या ऑब्जेक्टचा छुपा संदर्भ (हा) आहे."

"ते बरोबर आहे. त्यामुळे, स्टॅटिक नेस्टेड माउस क्लास, स्टॅटिक पद्धतीप्रमाणे, झू क्लासच्या स्टॅटिक व्हेरिएबल्समध्ये प्रवेश करू शकतो, परंतु ते नॉन-स्टॅटिकमध्ये प्रवेश करू शकत नाही."

"आम्ही सुरक्षितपणे माउस ऑब्जेक्ट्स तयार करू शकतो, जरी एक प्राणीसंग्रहालय ऑब्जेक्ट तयार केले नसले तरीही. तुम्ही ते कसे करू शकता ते येथे आहे:"

class Home
{
 public static void main(String[] args)
 {
  Zoo.Mouse mouse = new Zoo.Mouse();
 }
}

"माऊस वर्ग हा खरं तर एक अतिशय सामान्य वर्ग आहे. तो प्राणीसंग्रहालयाच्या वर्गात घोषित केल्यामुळे त्याची दोन खास वैशिष्ट्ये आहेत."

1) बाह्य वर्गाच्या बाहेर नेस्टेड क्लासचे (जसे की माउस क्लास) ऑब्जेक्ट्स तयार करताना, आपण बाह्य वर्गाचे नाव निर्दिष्ट करण्यासाठी डॉट ऑपरेटर देखील वापरणे आवश्यक आहे.

"यासारखे, उदाहरणार्थ: Zoo.Mouse."

2) Zoo.Mouse क्लास आणि त्याच्या ऑब्जेक्ट्सना Zoo क्लासच्या खाजगी स्टॅटिक व्हेरिएबल्स आणि पद्धतींमध्ये प्रवेश आहे (कारण माउस क्लास देखील Zoo क्लासमध्ये घोषित केला जातो).

"आजसाठी एवढेच."

"म्हणजे फक्त एक अतिरिक्त नाव आणि तेच?"

"हो."

"हे आधी वाटले त्यापेक्षा सोपे आहे."