मैं इस व्याख्या के तहत हूं कि अगर मुझे किसी विधि को स्थाई रूप से एक्सेस करने की आवश्यकता है, तो मुझे कक्षा सार केवल तभी बनाना चाहिए जब मुझे इसे तत्काल आवश्यकता न हो। क्या यह सच है?, मुझे स्थिर विधियों बनाम अमूर्त कक्षाओं का उपयोग कब करना चाहिए?
उत्तर
मुझे प्रश्न का थोड़ा अनिश्चितता है। स्टेटिक विधियां अमूर्त कक्षाओं से काफी अलग हैं। आम तौर पर यदि आप कक्षा को तत्काल नहीं चाहते हैं तो आप एक अमूर्त वर्ग बनायेंगे, लेकिन आप उप-वर्गों को तत्काल होने की उम्मीद करते हैं। अमूर्त वर्गों का उपयोग आंशिक रूप से लागू कक्षा बनाने के लिए बहुत उपयोगी हो सकता है जहां उप-वर्ग कक्षा को पूरी तरह कार्यान्वित करने के लिए शेष विधियों को भर देगा।
एक वर्ग स्थिर तरीकों से भरा सार घोषित किया जा सकता है अगर आप वर्ग के उपयोग को रोकने के लिए चाहते हैं, लेकिन आम तौर पर मैं कहूंगा कि यदि आप एक वर्ग सार चिह्नित करते हैं, आप कक्षाएं उस वर्ग का विस्तार खोजने के लिए सक्षम होना चाहिए। यदि मेरे पास एक वर्ग है जो स्थैतिक तरीकों से भरा है I इसे सार के रूप में लेबल न करें क्योंकि कोई भी इसे उपclass नहीं करेगा, और यह आमतौर पर भ्रम जोड़ता है। मैं इसे एक स्थिर वर्ग कहा जाता हूं, अमूर्त नहीं।
PHP में कक्षाओं पर स्थिर पहचानकर्ता नहीं है, इसलिए किसी को तत्काल होने से रोकने के लिए अन्य विधियों की आवश्यकता है।
आप कक्षा को इसे अमूर्त परिभाषित करके तत्काल होने से रोक सकते हैं, और ऐसा करने का एक सस्ता तरीका है, हालांकि यह एक अमूर्त वर्ग का उद्देश्य नहीं है।
अन्य तरीकों contructor निजी
private function __construct() {}
को परिभाषित करने या contructor में एक अपवाद फेंक अगर आप के लिए कारण है कि यह instantiated नहीं किया जा सकता है के रूप में एक और अधिक सार्थक संदेश देने के लिए इच्छा शामिल हैं।
function __construct() { throw new Exception('This is a static class'); }
यदि आप यह भी नहीं चाहते कि कक्षा उप-वर्ग वर्ग को अंतिम घोषित करे।
final class foo { }
या अजीब मामले में आप इसे उपवर्ग करने में सक्षम होना चाहता हूँ, लेकिन नहीं निर्माता अंतिम घोषित दृष्टांत के लिए यह बच्चों में से किसी अनुमति देते हैं। (दूर की गई स्थिति, लेकिन पूर्णता के लिए)
final private function __construct() {}
- 1. उद्देश्य-सी में, मुझे कक्षा विधियों का उपयोग कब करना चाहिए और मुझे उदाहरण विधियों का उपयोग कब करना चाहिए?
- 2. मुझे सार्वजनिक/निजी/स्थिर तरीकों का उपयोग कब करना चाहिए?
- 3. मुझे CompiledQuery का उपयोग कब करना चाहिए?
- 4. सी # मुझे सूची का उपयोग कब करना चाहिए और मुझे सरणीसूची का उपयोग कब करना चाहिए?
- 5. मुझे make_heap बनाम प्राथमिकता कतार का उपयोग कब करना चाहिए?
- 6. स्थिर बनाम तत्काल कक्षाओं का उपयोग कब करें
- 7. मुझे ConcurrentSkipListMap का उपयोग कब करना चाहिए?
- 8. मुझे सेफफोर्स का उपयोग कब करना चाहिए?
- 9. मुझे GC.SuppressFinalize() का उपयोग कब करना चाहिए?
- 10. मुझे पैरामीटर का उपयोग कब करना चाहिए?
- 11. मुझे _aligned_malloc() का उपयोग कब करना चाहिए?
- 12. आपको सार्वजनिक स्थैतिक विधियों का उपयोग कब करना चाहिए
- 13. (कब) मुझे PHP में टाइप संकेत का उपयोग करना चाहिए?
- 14. django - मुझे media_root या static_root का उपयोग कब करना चाहिए?
- 15. तुलना: इंटरफ़ेस विधियों बनाम वर्चुअल विधियों बनाम अमूर्त विधियों
- 16. मुझे std_logic_vector का उपयोग कब करना चाहिए और मुझे अन्य डेटा प्रकारों का उपयोग कब करना चाहिए?
- 17. मुझे अपाचे कॉमन्स 'Validate.isTrue का उपयोग कब करना चाहिए, और मुझे केवल' assert 'कीवर्ड का उपयोग कब करना चाहिए?
- 18. जावा में, मुझे इंटरफ़ेस में एक अमूर्त विधि का उपयोग कब करना चाहिए?
- 19. मुझे ओरेकल की इंडेक्स संगठित तालिका का उपयोग कब करना चाहिए? या, मुझे कब नहीं चाहिए?
- 20. सी ++: मुझे कक्षाओं के बजाय structs का उपयोग कब करना चाहिए और गति अंतर कहां हैं?
- 21. मुझे उद्देश्य सी कक्षाओं पर उपसर्ग का उपयोग कब करना चाहिए?
- 22. मुझे IDISposable कब लागू करना चाहिए?
- 23. क्या मुझे स्थिर डेटा सदस्यों का उपयोग करना चाहिए? (सी ++)
- 24. क्या मुझे स्थिर आयात का उपयोग करना चाहिए?
- 25. मुझे इनलाइन के बजाय __forceinline का उपयोग कब करना चाहिए?
- 26. मुझे जावास्क्रिप्ट फ्रेमवर्क लाइब्रेरी का उपयोग कब करना चाहिए?
- 27. मुझे MySQL संपीड़ित प्रोटोकॉल का उपयोग कब करना चाहिए?
- 28. मुझे पर्ल के ऑटोोलॉड का उपयोग कब करना चाहिए?
- 29. मुझे UIImagePickerControllerSourceTypePhotoLibrary का उपयोग UIImagePickerControllerSourceTypeSavedPhotosAlbum के बजाय कब करना चाहिए?
- 30. मुझे निहित कास्टिंग का उपयोग कब करना चाहिए?
निश्चित रूप से; सार बनाम अमूर्त बनाम एक निजी कन्स्ट्रक्टर होने के अर्थशास्त्र बहुत अलग हैं, और सही का उपयोग करने से कक्षा को पढ़ने के तरीके के बारे में कोड पढ़ने वाले किसी को भी एक मजबूत संकेत मिलता है। – Rob