private abstract array
यह ट्यूटोरियल जावा में विशेष कंस्ट्रक्टर्स जैसे जावा, एब्सट्रैक्ट, स्ट्रिंग, एरे, इंटरफ़ेस और डिस्ट्रक्टर में चर्चा करेगा:
जावा में कंस्ट्रक्टर्स पर हमारे अंतिम ट्यूटोरियल में, हमने जावा में कंस्ट्रक्टर्स से संबंधित महत्वपूर्ण अवधारणाओं को सीखा। हमने चर्चा की कि एक कंस्ट्रक्टर कैसे बनाया जाए और कंस्ट्रक्टर्स को परिभाषित करने के नियम, साथ ही कंस्ट्रक्टर के प्रकार आदि।
हमने कंस्ट्रक्टर ओवरलोडिंग और कंस्ट्रक्टर चेनिंग भी सीखा। अब, चलिए कुछ खास कंस्ट्रक्टर्स जैसे कि प्राइवेट कंस्ट्रक्टर, एब्सट्रैक्ट कंस्ट्रक्टर और स्ट्रिंग एंड अरेंज कंस्ट्रक्टर्स की जावा में चर्चा करते हैं। फिर हम जावा में विनाशकों पर चर्चा करेंगे और अंत में, हम विधि और निर्माणकर्ताओं के बीच के अंतरों का पता लगाएंगे।
=> यहाँ जावा शुरुआती गाइड पर एक नज़र रखना।
जावा में एक निजी कंस्ट्रक्टर के साथ शुरू करते हैं।
आप क्या सीखेंगे:
- जावा में निजी कंस्ट्रक्टर
- जावा में एब्सट्रैक्ट क्लास कंस्ट्रक्टर
- इंटरफ़ेस कंस्ट्रक्टर जावा में
- स्ट्रिंग कंस्ट्रक्टर जावा में
- जावा में ऐरे कंस्ट्रक्टर्स
- जावा में विध्वंसक
- कंस्ट्रक्टर बनाम मेथड जावा में
- बार बार पूछे जाने वाले प्रश्न
- निष्कर्ष
- अनुशंसित पाठ
जावा में निजी कंस्ट्रक्टर
जैसा कि पहले ही उल्लेख किया गया है, जावा वर्ग के कंस्ट्रक्टरों के पास उनसे जुड़े स्पेसिफिकर्स हो सकते हैं। इसलिए, हमारे पास ऐसे निर्माता हो सकते हैं जो निजी या सार्वजनिक हैं। हम अपने बाद के ट्यूटोरियल्स में एक्सेस स्पेसियर्स पर अधिक चर्चा करेंगे और हम एक बार फिर से कंस्ट्रक्टर्स को फिर से तैयार करेंगे।
जब कंस्ट्रक्टर को निजी घोषित किया जाता है, तो इसे केवल कक्षा के अंदर पहुँचा जा सकता है। यह किसी अन्य वर्ग के माध्यम से व्युत्पन्न वर्गों तक नहीं पहुंच सकता है। इसलिए हमें कक्षा में एक सार्वजनिक विधि प्रदान करने की आवश्यकता है जिसमें निजी निर्माता हों ताकि यह सार्वजनिक विधि निजी निर्माणकर्ताओं तक पहुंच सके।
जावा में निजी कंस्ट्रक्टर का उपयोग निम्नलिखित स्थितियों में किया जा सकता है:
- सिंगलेट्स को लागू करने के लिए।
- कारखाने के तरीकों को शामिल करने के लिए।
- उन कक्षाओं के लिए जिनमें केवल स्थिर सदस्य (चर और विधियाँ) हैं।
- अंतिम सदस्यों वाले वर्गों के लिए। (स्थिरांक - अंतिम और स्थैतिक)।
- प्रकार-सुरक्षित गणना का उपयोग करने के लिए।
उदहारण के लिए चलो एक सिंगलटन क्लास लेते हैं। एक एकल वर्ग एक वर्ग है जो एक समय में केवल एक ही वस्तु की अनुमति देता है। हम निजी कंस्ट्रक्टर का उपयोग यह सुनिश्चित करने के लिए कर सकते हैं कि हम एक से अधिक ऑब्जेक्ट बनाने की अनुमति न दें।
नीचे दिए गए कार्यक्रम में एक निजी कंस्ट्रक्टर का उपयोग करके एकल वर्ग को लागू किया गया है।
class SingleTonClass { //Static Class Reference private static SingleTonClass obj=null; private SingleTonClass(){ System.out.println('SingleTonClass::Private constructor'); } public static SingleTonClass create_object(){ //logic to create only one instance if(obj==null){ obj= new SingleTonClass(); } return obj; } public void display(){ System.out.println('This is SingleTonClass !!'); } } class Main { public static void main(String args()){ //cannot call private constructor directly. SingleTonClass myobject= SingleTonClass.create_object(); myobject.display(); } }
आउटपुट:
उपरोक्त कार्यक्रम एक एकल वर्ग घोषित करता है। हमने निजी कंस्ट्रक्टर को एक्सेस करने के लिए एक निजी कंस्ट्रक्टर और एक सार्वजनिक तरीका प्रदान किया है और वस्तुओं की संख्या को केवल एक तक सीमित करने के लिए। मुख्य विधि में, हम एक सिंगलटन क्लास ऑब्जेक्ट बनाने के लिए सार्वजनिक विधि को निष्पादित करते हैं।
जावा में एब्सट्रैक्ट क्लास कंस्ट्रक्टर
जावा में सार वर्ग C ++ को छोड़कर C ++ के विपरीत, हमारे पास जावा में एक सार कीवर्ड है जो एक सार वर्ग घोषित करने के लिए उपयोग किया जाता है। जावा में एब्सट्रैक्ट क्लास में कंस्ट्रक्टर हो सकते हैं। इस अमूर्त वर्ग के निर्माणकर्ता को तब कहा जाता है जब हम एक क्रियान्वयन वर्ग का एक उदाहरण बनाते हैं (जो अमूर्त वर्ग को विरासत में मिलता है)।
एब्सट्रैक्ट क्लास कंस्ट्रक्टर के निम्नलिखित उदाहरण पर विचार करें।
//abstract class declaration abstract class BaseClass { BaseClass() { System.out.println('BaseClass::Constructor Called'); } abstract void func1(); } class DerivedClass extends BaseClass { DerivedClass() { System.out.println('DerivedClass::Constructor Called'); } void func1() { System.out.println('DerivedClass::func1() called'); } } class Main { public static void main(String args()) { DerivedClass d = new DerivedClass(); } }
आउटपुट:
जैसा कि एक सार वर्ग को तत्काल नहीं किया जा सकता है, हम इस सार वर्ग से एक नया वर्ग प्राप्त करते हैं। कार्यक्रम के आउटपुट से पता चलता है कि जब हम मुख्य विधि में व्युत्पन्न वर्ग का एक ऑब्जेक्ट बनाते हैं, तो अमूर्त वर्ग के निर्माता को पहले कहा जाता है, उसके बाद एक व्युत्पन्न वर्ग का निर्माण होता है।
इंटरफ़ेस कंस्ट्रक्टर जावा में
जावा में इंटरफेस, अमूर्त वर्गों के समान हैं। डिफ़ॉल्ट सार्वजनिक अमूर्त द्वारा इंटरफेस हैं और केवल विधि प्रोटोटाइप हैं। इन प्रोटोटाइप को तब क्लास में लागू किया जाता है जो इंटरफ़ेस को लागू करता है।
तो क्या निर्माता इंटरफेसेस में मौजूद हैं?
नहीं। इंटरफेस में कंस्ट्रक्टर नहीं हैं। इसका कारण यह है कि एक इंटरफ़ेस में विधियाँ सिर्फ प्रोटोटाइप हैं और इसलिए हमें इंटरफ़ेस की एक वस्तु की आवश्यकता नहीं है या इसे बनाने की आवश्यकता नहीं है क्योंकि हम इसका उपयोग नहीं करने जा रहे हैं। इसलिए इंटरफ़ेस में कोई निर्माता होने की आवश्यकता नहीं है।
नीचे जावा प्रोग्राम इस तर्क को प्रदर्शित करता है।
//interface declaration interface Interface_Add{ public int addNumbers(int num1, int num2); //method prototype } class AddClass implements Interface_Add{ public int addNumbers(int num1, int num2){ //method implementation int result= num1+num2; return result; } } class Main{ public static void main(String args()) { AddClass obj= new AddClass(); System.out.println('Result of addition:' + obj.addNumbers(2, 3)); } }
आउटपुट:
यहां, हमारे पास एक इंटरफ़ेस d Interface_add ’है जिसमें एक विधि interface addNumbers’ प्रोटोटाइप है। तब एक वर्ग a AddClass ’इस इंटरफ़ेस को लागू करता है और यह भी विधि addNumbers।
मुख्य विधि में, क्लास को त्वरित किया जाता है और विधि को निष्पादित किया जाता है। इसलिए हम इस इंटरफ़ेस में एक निर्माता की कोई आवश्यकता नहीं देखते हैं।
अब जावा-जैसे स्ट्रिंग और एरे में कुछ पूर्ववर्ती कक्षाओं के निर्माणकर्ताओं पर चर्चा करते हैं।
स्ट्रिंग कंस्ट्रक्टर जावा में
जावा में एक स्ट्रिंग ऑब्जेक्ट को क्लास स्ट्रिंग के ऑब्जेक्ट के रूप में परिभाषित किया जा सकता है। स्ट्रिंग क्लास स्ट्रिंग ऑब्जेक्ट्स बनाने और शुरू करने के लिए निम्नलिखित कंस्ट्रक्टर प्रदान करता है।
इन निर्माणकर्ताओं में से कुछ नीचे चर्चा कर रहे हैं:
# 1) स्ट्रिंग (बाइट () मायरे)
किसी दिए गए बाइट सरणी से एक नई स्ट्रिंग ऑब्जेक्ट का निर्माण करता है। स्ट्रिंग ऑब्जेक्ट के निर्माण के लिए, यह डिफ़ॉल्ट प्लेटफ़ॉर्म वर्ण सेट का उपयोग करता है और बाइट सरणी को डिकोड करता है।
उदाहरण:
byte() myArray = {65, 66, 67, 68, 69}; String str =new String(myArray); //ABCDE
# 2) स्ट्रिंग (बाइट () मायरे, चारसेट चारसेट)
यह कंस्ट्रक्टर बाइट सरणी को डीकोड करने के लिए कंस्ट्रक्टर कॉल में निर्दिष्ट char_set का उपयोग करके एक नई स्ट्रिंग ऑब्जेक्ट का निर्माण करता है।
उदाहरण:
byte() myArray = {65, 66, 67, 68, 69}; Charset cs = Charset.defaultCharset(); String str = new String(myArray, cs); //ABCDE
# 3) स्ट्रिंग (चार () myArray)
हम एक वर्ण सरणी से एक स्ट्रिंग ऑब्जेक्ट का निर्माण कर सकते हैं।
उदाहरण:
char myArray() = {'P', 'a', 'r', 'i', 's'}; String s = new String(myArray); //Paris
# 4) स्ट्रिंग (char () myArray, int start_index, int count)
यहां, हम कैरेक्टर एरे से एक स्ट्रिंग ऑब्जेक्ट का निर्माण करते हैं, जिसमें start_index से लेकर काउंट तक अक्षरों की संख्या शामिल है।
उदाहरण:
char myArray() = {'P', 'a', 'r', 'i', 's'}; String s = new String(myArray, 0,2); //Pa
# 5) स्ट्रिंग (int () intArray, int ऑफसेट, int count)
उपरोक्त कंस्ट्रक्टर एक इंट सरणी से एक नई स्ट्रिंग ऑब्जेक्ट आवंटित करता है। स्ट्रिंग में वर्णों की संख्या ऑफसेट और गणना द्वारा परिभाषित की गई है।
उदाहरण:
int() intArray = {65, 69,73,79,85 }; String s = new String (intArray, 0, 5); //AEIOU
# 6) स्ट्रिंग (स्ट्रिंगबर्फर स्ट्रैबफ़र)
इस कंस्ट्रक्टर में, एक स्ट्रिंग स्ट्रिंग ऑब्जेक्ट से एक नई स्ट्रिंग ऑब्जेक्ट का निर्माण किया जाता है।
उदाहरण:
StringBuffer strbuffer = new StringBuffer('SoftwareTestingHelp'); String s = new String (strbuffer); //SoftwareTestingHelp
# 7) स्ट्रिंग (स्ट्रिंगबिजली स्ट्राइगर)
एक नया स्ट्रिंग ऑब्जेक्ट StringBuilder ऑब्जेक्ट का उपयोग करके बनाया गया है।
उदाहरण:
StringBuilder strbuilder = new StringBuilder('SoftwareTestingHelp'); String s = new String(strbuilder); // SoftwareTestingHelp
जावा में ऐरे कंस्ट्रक्टर्स
नीचे दिए गए अनुसार नए कीवर्ड का उपयोग करके ऐरे को बनाने और शुरू करने के लिए कंस्ट्रक्टरों का उपयोग करता है।
int() data = new int(4);
उपर्युक्त कथन 4 तत्वों की एक सारणी को डिफ़ॉल्ट 0 में आरम्भ करता है।
सरणी को आरंभीकृत करने का दूसरा तरीका नीचे दिया गया है:
int() data = new int(){2, 4, 6, 8};
जावा में विध्वंसक
अब तक हमने जावा में कंस्ट्रक्टर्स को देखा है जिसका उपयोग करके हम एक ऑब्जेक्ट बनाते हैं। जब ऑब्जेक्ट अपनी नौकरी के साथ समाप्त हो गया है और अब आवश्यकता नहीं है, तो ऑब्जेक्ट को आवंटित की गई मेमोरी को जारी करने या डील करने की आवश्यकता है। यह जावा में एक विध्वंसक का काम है।
जावा में, गारबेज कलेक्टर उन वस्तुओं को जारी करने के लिए जिम्मेदार है जो उपयोग में अधिक नहीं हैं या अगम्य नहीं हैं। जावा में विध्वंसक को अंतिम रूप दिया जाता है और वे गैर-नियतात्मक होते हैं जैसे कि हम गारंटी नहीं दे सकते कि उन्हें निष्पादित किया जाएगा।
जावा में, हमें विनाशकों के बारे में चिंता करने की आवश्यकता नहीं है। जावा में डिस्ट्रक्टर्स का एक विशिष्ट सिंटैक्स नहीं है। वस्तुओं को नष्ट कर दिया जाता है, लेकिन हम विध्वंसक को उस तरीके से नहीं कहते हैं जिस तरह से हम इसे C ++ में कहते हैं।
जैसा कि ऊपर उल्लेख किया गया है, विध्वंसक का काम फाइनलिज़र द्वारा किया जाता है जिसे कचरा कलेक्टर द्वारा कहा जाता है।
जावा में अंतिम विधि आपके संदर्भ के लिए नीचे प्रदर्शित की गई है।
class Main { public static void main(String() args) { Main dm = new Main(); //create object dm = null; System.gc(); //call garbage collector System.out.println('Main Mathod'); } protected void finalize() //finalize method { System.out.println('Finalize method :: object is garbage collected'); } }
आउटपुट:
उपरोक्त कार्यक्रम में, हम एक क्लास ऑब्जेक्ट बनाते हैं। इसे शून्य पर सेट करें और फिर हम System.gc () विधि को कॉल करें। अब वह वस्तु पहुंच से बाहर है, और अंतिम विधि (विध्वंसक) को संक्षेप में कहा जाता है।
कंस्ट्रक्टर बनाम मेथड जावा में
आइए एक कंस्ट्रक्टर और जावा में एक विधि के बीच कुछ अंतरों को सारणीबद्ध करें।
कंस्ट्रक्टर्स | तरीका |
---|---|
एक नई वस्तु बनाता है। | पहले से मौजूद वस्तु पर काम करता है। |
ऑब्जेक्ट बनाते समय क्लास के सदस्यों को इनिशियलाइज़ करने के लिए उपयोग किए जाने वाले कोड का एक ब्लॉक। | प्रोग्रामिंग स्टेटमेंट का एक संग्रह जो निष्पादित होने पर परिणाम उत्पन्न करता है। |
वस्तुओं का आरंभीकरण करने के लिए उपयोग किया जाता है। | जावा द्वारा निष्पादित स्टेटमेंट का एक क्रम। मई या एक प्रारंभिक दिनचर्या शामिल नहीं हो सकता है। |
अंतर्निहित रूप से आमंत्रित किया गया। | एक कार्यक्रम में स्पष्ट रूप से लागू करने की आवश्यकता है। |
नए कीवर्ड का उपयोग करके कोई नई वस्तु बनाए जाने पर इसे आमंत्रित किया जाता है। | जब प्रोग्रामर द्वारा विधि को बुलाया जाता है तो आमंत्रित किया जाता है। |
वर्ग के समान नाम है। | यह प्रोग्रामिंग भाषा द्वारा अनुमत किसी भी नाम का हो सकता है। |
वापसी का प्रकार नहीं है | वापसी प्रकार होना चाहिए अन्यथा उसे वापस लौटना चाहिए। |
एक वर्ग में कई अतिभारित निर्माता हो सकते हैं। | कक्षा में अधिभार के साथ-साथ अलग-अलग विधियां हो सकती हैं। |
इसे बाल वर्ग द्वारा विरासत में नहीं दिया जा सकता है। | यह बाल वर्ग द्वारा विरासत में प्राप्त किया जा सकता है और यहां तक कि ओवरराइड भी। |
बार बार पूछे जाने वाले प्रश्न
Q # 1) क्या कंस्ट्रक्टर प्राइवेट हो सकते हैं?
उत्तर: हाँ। जावा में कंस्ट्रक्टर्स निजी हो सकते हैं। सार कक्षाओं सहित सभी वर्गों में निजी निर्माता हो सकते हैं। निजी कंस्ट्रक्टरों का उपयोग करके हम कक्षा को तत्काल होने से रोक सकते हैं या हम उस वर्ग की वस्तुओं की संख्या को सीमित कर सकते हैं।
Q # 2) जावा में एब्सट्रैक्ट क्लास कन्स्ट्रक्टर का उपयोग क्या है?
उत्तर: अमूर्त वर्ग का निर्माण तब किया जाता है जब हम व्युत्पन्न वर्ग की एक वस्तु बनाते हैं जो अमूर्त वर्ग को विरासत में मिलती है। इसके अलावा अगर सार वर्ग में कुछ सदस्य चर हैं, तो हम उन्हें सार वर्ग के निर्माता में शुरू कर सकते हैं।
Q # 3) क्या हम जावा में एब्सट्रैक्ट क्लास में पैरामीटरी कंस्ट्रक्टर को परिभाषित कर सकते हैं?
उत्तर: हां, हम एक अमूर्त वर्ग में एक पैरामीटरकृत निर्माता हो सकते हैं। तब हम इस निर्माता को व्युत्पन्न वर्ग से बुला सकते हैं जो सुपर () कॉल का उपयोग करके सार वर्ग को विरासत में मिला है।
Q # 4) क्या आप जानते हैं कि जावा में कोई डिस्ट्रॉक्टर क्यों नहीं है?
उत्तर: जावा को एक विशिष्ट विध्वंसक की आवश्यकता नहीं है क्योंकि इसके पास कचरा कलेक्टर है। यह कचरा संग्राहक उन वस्तुओं को नष्ट कर देता है जो अगम्य हैं और स्मृति को मुक्त करती हैं। फ़ाइनलीज़ नामक एक विधि कचरा संग्राहक का भी एक हिस्सा है जो गैर-नियतात्मक रूप से निष्पादित होती है और विनाशकारी के कार्य को निष्पादित करती है जैसे संसाधनों को मुक्त करना आदि।
Q # 5) क्या एब्सट्रैक्ट क्लास में शरीर हो सकता है?
उत्तर: सं। एक अमूर्त वर्ग में केवल विधि घोषणाएँ और निर्माता हो सकते हैं। इसके तरीके लागू नहीं हैं। वह वर्ग जो इस अमूर्त वर्ग को विरासत में देता है, विधियों को लागू करता है। प्रोटोटाइप या घोषणाओं के अलावा, इसमें दृश्यता या पहुंच विनिर्देशक भी हो सकते हैं।
4 साल के अनुभव के लिए सेलेनियम साक्षात्कार प्रश्न
निष्कर्ष
यह जावा में कंस्ट्रक्टर्स पर हमारे ट्यूटोरियल को पूरा करता है। यहां, हमने निर्माणकर्ताओं की परिभाषा, निर्माण और प्रकारों को कवर किया है। हमने जावा में कंस्ट्रक्टर ओवरलोडिंग और कंस्ट्रक्टर चेनिंग पर भी चर्चा की।
हमने जावा में सार और निजी कंस्ट्रक्टरों की खोज की और सीखा कि इंटरफेस में कंस्ट्रक्टर क्यों नहीं हो सकते हैं। हमने ऐसे कंस्ट्रक्टर देखे, जिनका उपयोग सरणी और स्ट्रिंग कक्षाओं में किया जाता है।
हमने जावा में विनाशकों पर भी चर्चा की जो निर्माणकर्ताओं के विपरीत कार्य करते हैं। निर्माता वस्तुओं का निर्माण करते हैं जबकि विध्वंसक वस्तुओं को नष्ट करते हैं। जावा में, विध्वंसक कार्य को अंतिम रूप से किया जाता है जिसे कचरा संग्रहण के दौरान निष्पादित किया जाता है।
इस प्रकार, हमारे पास जावा में एक विशिष्ट विध्वंसक नहीं है और हमें इसे C ++ में करने के तरीके में परिभाषित करने की आवश्यकता नहीं है। हमने विधि और निर्माणकर्ता के बीच अंतर पर भी चर्चा की। हम जानते हैं कि कंस्ट्रक्टर एक विधि के समान नहीं है, लेकिन हम कंस्ट्रक्टर को एक विशेष विधि के रूप में देख सकते हैं।
=> आसान जावा प्रशिक्षण श्रृंखला के माध्यम से पढ़ें।
अनुशंसित पाठ
- जावा कंस्ट्रक्टर - क्लास, कॉपी और डिफॉल्ट कंस्ट्रक्टर्स
- सी # कॉन्सेप्ट: कंस्ट्रक्टर, डिस्ट्रक्टर, स्टेटिक क्लास, स्ट्रक्चर एंड एनम
- जावा स्ट्रिंग ऐरे- कोड उदाहरणों के साथ ट्यूटोरियल
- स्ट्रिंग स्ट्रिंग बफर और स्ट्रिंग बिल्डर ट्यूटोरियल के साथ जावा स्ट्रिंग
- जावा स्ट्रिंग लंबाई () उदाहरणों के साथ विधि
- जावा स्ट्रिंग में () उदाहरण के साथ विधि ट्यूटोरियल शामिल हैं
- जावा स्ट्रिंग इंडेक्सऑफ विधि कोड उदाहरणों के साथ
- जावा स्ट्रिंग प्रोग्रामिंग उदाहरणों के साथ तुलना विधि