स्थानीय वर्ग: विधियों के अंदर की कक्षाएं - 1

"हाय, अमीगो!"

"एक और छोटा सा विषय स्थानीय वर्ग है ।"

"जैसा कि आपने देखा है, आप न केवल अलग-अलग फाइलों में, बल्कि अन्य कक्षाओं के भीतर भी कक्षाएं बना सकते हैं। उनका उपयोग उन तरीकों के भीतर किया जा सकता है जिनमें वे घोषित किए गए हैं।"

"आवरण पर देखें:"

उदाहरण
class Car
{
 public ArrayListcreatePoliceCars(int count)
 {
  ArrayList result = new ArrayList();

  class PoliceCar extends Car
  {
   int policeNumber;
   PoliceCar(int policeNumber)
  {
   this.policeNumber = policeNumber;
  }
 }

 for(int i = 0; i < count; i++)
     result.add(new PoliceCar(i));
  return result;
 }
}

"और हमें ऐसी कक्षाओं की आवश्यकता क्यों है?"

"एक वर्ग को उसके सभी निर्माणकर्ताओं और विधियों के साथ, एक विधि के अंदर रखना बहुत पठनीय कोड नहीं बनाता है, क्या आपको नहीं लगता?"

"बिल्कुल सही। आप बिल्कुल सही कह रहे हैं।"

"आप अज्ञात आंतरिक कक्षाओं का उपयोग विधियों के अंदर भी कर सकते हैं। लेकिन इन वर्गों का एक छोटा सा फायदा है, और इसके परिणामस्वरूप, वे अक्सर तरीकों के अंदर उपयोग किए जाते हैं।"

"एक विधि के भीतर घोषित वर्ग उस विधि के स्थानीय चर का उपयोग कर सकता है:"

class Car
{
 public ArrayListcreatePoliceCars(int count)
 {
  ArrayList result = new ArrayList();

  for(int i = 0; i < count; i++)
  {
   final int number = i;
   result.add(new Car()
  {
   int policeNumber = number;
  });
 }
  return result;
 }
}

"लेकिन एक सीमा है: चर «केवल पढ़ने के लिए» हैं - उन्हें बदला नहीं जा सकता है।"

"यहाँ वह प्रतिबंध क्यों मौजूद है:"

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

"एक विधि के चर का उपयोग करने में सक्षम होना बहुत अच्छा है। मुझे आशा है कि इसकी उचित सराहना होगी। यह बहुत बुरा है, हालांकि आप चर नहीं बदल सकते।"

"ऐली आज आपको बताएगी कि आप उन्हें क्यों नहीं बदल सकते। इस बीच, मैं लगभग एक घंटे के लिए झपकी लेने जा रही हूं।"

"शुभ रात्रि, किम। दिलचस्प पाठ के लिए धन्यवाद।"