![translation](https://cdn.durumis.com/common/trans.png)
यह एक AI अनुवादित पोस्ट है।
भाषा चुनें
durumis AI द्वारा संक्षेपित पाठ
- उपयोगिता कक्षाएँ, जिनमें केवल स्थिर विधियाँ और क्षेत्र होते हैं, उन्हें कंस्ट्रक्टर की आवश्यकता नहीं होती है, लेकिन कंपाइलर स्वचालित रूप से एक सार्वजनिक डिफ़ॉल्ट कंस्ट्रक्टर बनाता है, इसलिए इंस्टेंटिएशन को रोकने के लिए कंस्ट्रक्टर के एक्सेस मोडिफायर को निजी रूप से सेट करना सबसे अच्छा है।
- निजी कंस्ट्रक्टर बाहरी रूप से पहुँचा नहीं जा सकता है, और यदि इसे आंतरिक रूप से बुलाया जाता है, तो यह एक अपवाद उत्पन्न करने के लिए सेट किया गया है, जिससे उपयोगिता कक्षाओं के इंस्टेंटिएशन को रोका जा सके।
- निजी कंस्ट्रक्टर का उपयोगकर्ता द्वारा समझना मुश्किल हो सकता है, इसलिए टिप्पणी देना एक अच्छा विचार है, और कंस्ट्रक्टर को निजी रूप से सेट करने से वंशानुगत भी असंभव हो जाता है।
कभी-कभी केवल स्थिर विधियों और स्थिर क्षेत्रों वाले वर्ग का उपयोग करना उपयोगी होता है।
उदाहरण के लिए, आप `java.lang.Math`, `java.util.Arrays` जैसे गणितीय संचालन या सरणियों से संबंधित विधियों के संग्रह के लिए उपयोगिता वर्गों का उपयोग कर सकते हैं। या, आप `java.util.Collections` जैसे विशेष इंटरफ़ेस को लागू करने वाली वस्तुएँ बनाने के लिए स्थिर कारखाना विधियों का उपयोग कर सकते हैं।
इन उपयोगिता वर्गों को अलग-अलग इंस्टेंस चर या विधियों की आवश्यकता नहीं होती है, इसलिए उन्हें कन्स्ट्रक्टर की आवश्यकता नहीं होती है। हालाँकि, यदि आप कन्स्ट्रक्टर को स्पष्ट रूप से निर्दिष्ट नहीं करते हैं, तो कंपाइलर स्वचालित रूप से एक सार्वजनिक डिफ़ॉल्ट कन्स्ट्रक्टर बनाता है। इसलिए, उपयोगकर्ता यह नहीं बता सकते कि यह कन्स्ट्रक्टर स्वचालित रूप से बनाया गया है या नहीं।
इसे रोकने के लिए, कभी-कभी इसे एक सार वर्ग के रूप में बनाया जाता है, लेकिन आप एक सार वर्ग से एक उदाहरण नहीं बना सकते हैं। ऐसा इसलिए है क्योंकि आप बस एक उपवर्ग बना सकते हैं और उससे एक उदाहरण बना सकते हैं।
public abstract class Person {
public static void speak(String message) {
System.out.println(message);
}
}
public class Student extends Person {
public Student() {
super();
}
इसलिए, उपयोगिता वर्ग के उदाहरण के निर्माण को रोकने के लिए, आपको कन्स्ट्रक्टर के पहुंच नियंत्रक को निजी बनाना होगा।
public abstract class Person {
private Person() {
throw new AssertionError();
}
public static void speak(String message) {
System.out.println(message);
}
जैसा कि ऊपर दिखाया गया है, यदि डिफ़ॉल्ट कन्स्ट्रक्टर का पहुंच नियंत्रक निजी है, तो इसे कक्षा के बाहर से एक्सेस नहीं किया जा सकता है। इसके अतिरिक्त, यदि डिफ़ॉल्ट कन्स्ट्रक्टर को आंतरिक रूप से बुलाया जाता है, तो इसे एक अपवाद उत्पन्न करने से रोका जाता है।
यह निजी कन्स्ट्रक्टर उपयोगकर्ताओं के लिए कन्स्ट्रक्टर को समझना मुश्किल बना सकता है, इसलिए इसे टिप्पणी के साथ दस्तावेज करना एक अच्छा विचार है। ध्यान दें कि कन्स्ट्रक्टर को निजी बनाकर, आप वंशानुगत होने से भी रोक देते हैं।