रूबी में घोंसला वाले वर्ग नहीं हैं।
विरासत के माध्यम से, व्यवहार प्राप्त करने का एकमात्र तरीका है, ठीक है।
यदि आप अपना कोड काम करना चाहते हैं, तो आपको नेस्टेड कक्षाओं का समर्थन करने वाली भाषा का उपयोग करने की आवश्यकता है।
- BETA, भाषा जो नेस्टेड कक्षाएं शुरू की (और उसके उत्तराधिकारी gbeta)
- Newspeak
: हालांकि यह एक अविश्वसनीय रूप से
स्वच्छ और शक्तिशाली सुविधा है, मैं दुर्भाग्य से केवल दो भाषाओं कि कक्षाओं नेस्ट है के बारे में पता
मुझे किसी अन्य के बारे में पता नहीं है।
जावा में नेस्टेड कक्षाएं नामक एक रचना है, लेकिन उनके पास कुछ दुर्भाग्यपूर्ण डिज़ाइन सीमाएं हैं।
अपने उदाहरण में ऊपर, यह वर्ग B
कि A
अंदर नेस्टेड है, यह निरंतरB
कि A
अंदर नेस्टेड है नहीं है। इस बारे में सोचो: A::B
और C
:
C = A::B
अब, वर्ग दो नाम के तहत उपलब्ध है। यह तुरंत स्पष्ट होना चाहिए कि C
वैश्विक है और A
के अंदर घोंसला नहीं है। (ठीक है, वास्तव में, C
Object
के अंदर घोंसला है, क्योंकि वास्तव में वैश्विक स्थिरांक नहीं हैं, लेकिन यह बिंदु के बगल में है।) लेकिन C
और A::B
समान वर्ग हैं, यह स्पष्ट रूप से घोंसला और घोंसला नहीं हो सकता है। केवल तार्किक निष्कर्ष यह है कि कक्षा स्वयं घोंसला नहीं है।
नेस्टेड कक्षाओं की परिभाषित विशेषता यह है कि विधि लुकअप दो आयामों के साथ जाता है: विरासत श्रृंखला, और घोंसले के माध्यम से बाहर। रुबी, सभी ओओ भाषाओं में 99.9% की तरह, केवल पूर्व का समर्थन करता है। (कुछ अर्थों में, घोंसले वाले वर्ग न केवल अपने सुपरक्लास की विशेषताएं, बल्कि आसपास के वर्ग की विशेषताओं को भी प्राप्त करते हैं।)
स्रोत
2011-02-04 22:39:30
'बी' को 'ए' का उत्तराधिकारी बनाएं? – adamax