2008-09-30 10 views

उत्तर

35

आप sealed कीवर्ड खोज रहे हैं। यह जावा में कीवर्ड final कीवर्ड करता है। उत्तराधिकारी के प्रयासों के परिणामस्वरूप संकलन त्रुटि होगी।

6

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

+0

मैं असहमत हूं। विरासत अक्सर दुरुपयोग किया जाता है, और अधिकांश वर्गों को विरासत में विरासत में कोडित नहीं किया जाता है। इसलिए, जब तक कि एक वर्ग विरासत में नहीं बनाया गया था, इसे डिफ़ॉल्ट रूप से बंद कर दिया जाना चाहिए। फिर, जब कोई आपकी मुहरबंद कक्षा से वंचित हो जाता है, तो यह उन्हें इसके बारे में थोड़ा और सोचने के लिए मजबूर कर सकता है। –

+0

मैं रॉबर्ट से सहमत हूं (यानी मैं मार्क से असहमत हूं)। विरासत ऐसा कुछ है जो सावधानीपूर्वक विचार करने का एक बड़ा सौदा करता है। उदाहरण के लिए, जब भी आप किसी वर्चुअल विधि को दूसरे से कॉल करते हैं, तो आप उस कार्यान्वयन को लॉक कर रहे हैं - कॉल को दूसरे तरीके से बदलने के लिए व्युत्पन्न कक्षाएं तोड़ सकती हैं। –

+0

यह ** ** ** प्रदर्शन के साथ मदद करता है। – MagicKat

0

sealed कीवर्ड काम करेगा, लेकिन फिर भी आप प्रतिबिंब आईआईआरसी का उपयोग कर कक्षा से प्राप्त कर सकते हैं।

+0

आप निजी सदस्यों को प्रतिबिंब के साथ भी एक्सेस कर सकते हैं। इसका मतलब यह नहीं है कि यह एक अच्छा विचार है – Kilhoffer

+1

मुझे अत्यधिक संदेह है कि आप प्रतिबिंब का उपयोग कर कक्षा से प्राप्त कर सकते हैं। अगर कोई मुझे System.String से प्राप्त कक्षा दिखाता है, तो मुझे विश्वास होगा - लेकिन तब तक ... –

+1

प्रतिबिंब के माध्यम से विरासत? मैं यह भी नहीं देखता कि यह कैसे काम करेगा या सीएलआर अगर आपने कोशिश की तो भी कोई ध्यान देना होगा। क्या आप उस दावे पर विस्तार कर सकते हैं? –

1

sealed संशोधक जावा में final करता है जो करेगा।

इसके अलावा, हालांकि यह संभवतः आप इस स्थिति में जो खोज रहे हैं वह नहीं है, static के रूप में कक्षा को चिह्नित करने से इसे विरासत में रखा जाता है (यह दृश्यों के पीछे सील हो जाता है)।

संबंधित मुद्दे

 संबंधित मुद्दे