डिज़ाइन में, आप बेस क्लास class A
चाहते हैं ताकि वह व्युत्पन्न कक्षाओं के लिए केवल एक इंटरफ़ेस पेश कर सके। इसका मतलब है, आप नहीं चाहते हैं कि कोई भी बेस क्लास की वस्तु को तुरंत चालू करे। आप केवल अपस्टास्ट पर (अंतर्निहित अपकास्टिंग, जो आपको पॉलिमॉर्फिक व्यवहार देता है), ताकि इसका इंटरफ़ेस उपयोग किया जा सके। यह सार तत्व का उपयोग करके उस वर्ग सार को बनाकर पूरा किया जाता है। दूसरी तरफ आप class A
की कार्यक्षमता का केवल एक हिस्सा उपयोग करना चाहते हैं ताकि आप (बच्चे के रूप में) पर सिस्टम के बीच युग्मन या कार्यान्वयन निर्भरता को कम करें और डुप्लीकेट को रोकें।
लेकिन जब आप आंतरिक कक्षा को परिभाषित करते हैं तो ध्यान रखें, आंतरिक कक्षाओं के बिना कोड अधिक रखरखाव और पठनीय है। जब आप बाहरी वर्ग के निजी डेटा सदस्यों तक पहुंचते हैं, तो जेडीके कंपाइलर निजी वर्ग तक पहुंचने के लिए आंतरिक वर्ग के लिए बाहरी वर्ग में पैकेज-एक्सेस सदस्य फ़ंक्शन बनाता है। यह एक सुरक्षा छेद छोड़ देता है। आम तौर पर हमें आंतरिक कक्षाओं का उपयोग करने से बचना चाहिए। आंतरिक वर्ग का केवल तभी उपयोग करें जब एक आंतरिक वर्ग बाहरी वर्ग और/या आंतरिक वर्ग के संदर्भ में केवल प्रासंगिक हो, निजी हो सकता है ताकि केवल बाहरी वर्ग इसे एक्सेस कर सके। आंतरिक कक्षाएं मुख्य रूप से इटरेटर्स, तुलनात्मक आदि जैसे सहायक वर्गों को लागू करने के लिए उपयोग की जाती हैं जिनका उपयोग बाहरी वर्ग के संदर्भ में किया जाता है। abstract class
के बारे में, यह मददगार के लिए सार होना चाहिए, मान लीजिए कि आपके सहायक उनके लिए सार फ़ॉर्म लिखने के लिए बहुत जटिल होना चाहिए।
आपके मामले में, मुझे नेस्टेड अमूर्त कक्षाओं का व्यापक उपयोग याद नहीं है, शायद Swing
दुनिया में।
स्रोत
2012-11-18 06:20:30
क्या आप मुझे कुछ वेबसाइट या पुस्तक लिंक दे सकते हैं! – sunleo
@sunleo आप Google नेस्टेड/आंतरिक कक्षा के उपयोग में खोज करने का प्रयास कर सकते हैं क्योंकि यह जावा दुनिया में उपयोग छुपा नहीं है। आम तौर पर हमें आंतरिक कक्षाओं का उपयोग करने से बचना चाहिए। –