कभी-कभी केवल स्थिर विधियों और स्थिर क्षेत्रों वाले वर्ग का उपयोग करना उपयोगी होता है।
उदाहरण के लिए, java.lang.Math, java.util.Arrays जैसे गणितीय संचालन या सरणी से संबंधित विधियों के संग्रह के लिए उपयोगिता वर्गों का उपयोग किया जा सकता है। या java.util.Collections की तरह किसी विशिष्ट इंटरफ़ेस को लागू करने वाली वस्तु बनाने के लिए स्थिर फ़ैक्टरी विधियों को एक साथ रखा जा सकता है।
इस प्रकार के उपयोगिता वर्गों को इंस्टेंस चर या विधियों की आवश्यकता नहीं होती है, इसलिए उन्हें कंस्ट्रक्टर की आवश्यकता नहीं होती है। हालाँकि, यदि आप कंस्ट्रक्टर को स्पष्ट रूप से परिभाषित नहीं करते हैं, तो कंपाइलर स्वचालित रूप से एक सार्वजनिक डिफ़ॉल्ट कंस्ट्रक्टर बनाता है। इसलिए उपयोगकर्ता यह नहीं बता सकता है कि यह कंस्ट्रक्टर स्वचालित रूप से बनाया गया है या नहीं।
इसे रोकने के लिए, कभी-कभी इसे एक सार वर्ग के रूप में बनाया जाता है, लेकिन एक सार वर्ग के साथ, आप इंस्टेंस को नहीं बना सकते हैं। ऐसा इसलिए है क्योंकि आप केवल एक सबक्लास बनाकर और उसे इंस्टेंस करके इसे इंस्टेंस कर सकते हैं।
इसलिए, उपयोगिता वर्ग के इंस्टेंस को रोकने के लिए, कंस्ट्रक्टर का एक्सेस मोड निजी होना चाहिए।
जैसा कि ऊपर दिखाया गया है, यदि डिफ़ॉल्ट कंस्ट्रक्टर का एक्सेस मोड निजी है, तो क्लास के बाहर से इसे एक्सेस नहीं किया जा सकता है। इसके अलावा, यदि कंस्ट्रक्टर को आंतरिक रूप से कॉल किया जाता है, तो यह एक अपवाद उत्पन्न करके इसे रोक देता है।
इस तरह के निजी कंस्ट्रक्टर का उपयोग करने वालों के लिए कंस्ट्रक्टर को समझना मुश्किल हो सकता है, इसलिए टिप्पणी जोड़ना अच्छा है। संदर्भ के लिए, यदि आप कंस्ट्रक्टर को निजी बनाते हैं, तो यह वंशानुक्रम को भी अक्षम कर देता है।
टिप्पणियाँ0