जावा कंस्ट्रक्टर्स का उपयोग करना: एक आसान हाउ-टू गाइड

जावा कंस्ट्रक्टर पहले से परिभाषित ऑब्जेक्ट का एक नया उदाहरण बनाता है। यह आलेख चर्चा करता है कि एक व्यक्ति ऑब्जेक्ट बनाने के लिए जावा कंस्ट्रक्टर विधियों का उपयोग कैसे करें।

ध्यान दें: आपको इस उदाहरण के लिए एक ही फ़ोल्डर में दो फ़ाइलें बनाने की आवश्यकता है: Person.java व्यक्ति वर्ग को परिभाषित करता है, और PersonExample.java होता है मुख्य विधि कि व्यक्ति वस्तुओं बनाता है।

कंस्ट्रक्टर विधि

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

 पब्लिक क्लास पर्सन {
निजी स्ट्रिंग पहले नाम;
निजी स्ट्रिंग अंतिम नाम;
निजी स्ट्रिंग पता;
निजी स्ट्रिंग उपयोगकर्ता नाम;
// कंस्ट्रक्टर विधि
सार्वजनिक व्यक्ति ()
{
}
}

कंस्ट्रक्टर विधि किसी भी अन्य सार्वजनिक विधि के समान है सिवाय इसके कि यह वर्ग के समान नाम को साझा करता है, और यह एक मूल्य वापस नहीं कर सकता है। इसके पास कोई नहीं, एक या कई पैरामीटर हो सकते हैं।

वर्तमान में, हमारी कंस्ट्रक्टर विधि कुछ भी नहीं करती है, और यह विचार करने के लिए एक अच्छा समय है कि व्यक्तिगत वस्तु की प्रारंभिक स्थिति के लिए इसका क्या मतलब है। अगर हम चीजों को छोड़ देते हैं जैसे वे हैं या हमने अपने व्यक्ति वर्ग में एक निर्माण विधि शामिल नहीं की है

instagram viewer
जावा आप एक वर्ग के बिना परिभाषित कर सकते हैं), फिर खेतों का कोई मूल्य नहीं होगा - और हम निश्चित रूप से चाहते हैं कि हमारे व्यक्ति के पास नाम और पता के साथ-साथ अन्य विशेषताएं हों। यदि आपको लगता है कि कोई ऐसा मौका है, जिसका उपयोग आपकी वस्तु के रूप में नहीं किया जा सकता है, जैसा कि आप उम्मीद करते हैं और फ़ील्ड तब बनाए नहीं जा सकते हैं जब ऑब्जेक्ट बनाया जाता है, तो हमेशा उन्हें डिफ़ॉल्ट मान के साथ परिभाषित करें:

 पब्लिक क्लास पर्सन {
निजी स्ट्रिंग पहले नाम = "";
निजी स्ट्रिंग अंतिम नाम = "";
निजी स्ट्रिंग पता = "";
निजी स्ट्रिंग उपयोगकर्ता नाम = "";
// कंस्ट्रक्टर विधि
सार्वजनिक व्यक्ति ()
{
}
}

सामान्य तौर पर, यह सुनिश्चित करने के लिए कि एक निर्माण विधि उपयोगी है, हम इसे मापदंडों की अपेक्षा करने के लिए डिज़ाइन करेंगे। इन मापदंडों के माध्यम से पारित मूल्यों का उपयोग निजी क्षेत्रों के मूल्यों को निर्धारित करने के लिए किया जा सकता है:

 पब्लिक क्लास पर्सन {
निजी स्ट्रिंग पहले नाम;
निजी स्ट्रिंग अंतिम नाम;
निजी स्ट्रिंग पता;
निजी स्ट्रिंग उपयोगकर्ता नाम;
// कंस्ट्रक्टर विधि
सार्वजनिक व्यक्ति (स्ट्रिंग personFirstname, स्ट्रिंग personLastName, स्ट्रिंग व्यक्तिअनुभवी, स्ट्रिंग व्यक्तिउपयोगकर्ता)
{
firstName = personFirstName;
lastName = personLastName;
पता = personAddress;
उपयोगकर्ता नाम = personUsername;
}
// स्क्रीन पर ऑब्जेक्ट की स्थिति प्रदर्शित करने के लिए एक विधि
सार्वजनिक शून्य प्रदर्शनचित्र ()
{
System.out.println ("नाम:" + firstName + "" + lastName);
System.out.println ("पता:" + पता);
System.out.println ("उपयोगकर्ता नाम:" + उपयोगकर्ता नाम);
}
}

हमारी कंस्ट्रक्टर विधि अब उम्मीद करती है कि इसके लिए चार तार का मान पास किया जाएगा। वे तब ऑब्जेक्ट की प्रारंभिक स्थिति सेट करने के लिए उपयोग किए जाते हैं। हमने एक नई विधि भी जोड़ी है जिसे कहा जाता है displayPersonDetails () इसे बनाए जाने के बाद ऑब्जेक्ट की स्थिति को देखने के लिए हमें सक्षम करने के लिए।

कंस्ट्रक्टर विधि को कॉल करना

किसी ऑब्जेक्ट के अन्य तरीकों के विपरीत, कंस्ट्रक्टर विधि को "नया" कीवर्ड का उपयोग करके बुलाया जाना चाहिए:

 सार्वजनिक वर्ग के व्यक्ति
सार्वजनिक स्थैतिक शून्य main (String [] args) {
व्यक्ति को = नया व्यक्ति ("डेव", "डेविडसन", "12 मुख्य सेंट", "डीडीवाड्सन");
dave.displayPersonDetails ();
}
}

यहाँ हमने क्या किया:

  1. व्यक्ति वस्तु का नया उदाहरण बनाने के लिए, हम पहले व्यक्ति के प्रकार के एक चर को परिभाषित करते हैं जो वस्तु को धारण करेगा। इस उदाहरण में, हमने इसे कॉल किया है डेव.
  2. समतुल्य चिन्ह के दूसरी तरफ, हम अपने व्यक्ति वर्ग की निर्माण विधि को कहते हैं और इसे चार स्ट्रिंग मानों से गुजारते हैं। हमारी कंस्ट्रक्टर विधि उन चार मानों को लेगी और व्यक्ति की प्रारंभिक स्थिति को निर्धारित करेगी: पहले नाम = "डेव", अंतिम नाम = "डेविडसन", पता = "12 मुख्य सेंट", उपयोगकर्ता नाम = "डीडीएविडसन"।

ध्यान दें कि हमने व्यक्तिगत ऑब्जेक्ट को कॉल करने के लिए जावा मुख्य वर्ग पर कैसे स्विच किया है। जब आप ऑब्जेक्ट्स के साथ काम करेंगे, तो प्रोग्राम स्पैन करेंगे एकाधिक .java फाइलें. सुनिश्चित करें कि आप उन्हें एक ही फ़ोल्डर में सहेजते हैं। प्रोग्राम को संकलित करने और चलाने के लिए, बस जावा को संकलित करें और चलाएं मुख्य वर्ग फ़ाइल (यानी, PersonExample.java). जावा कंपाइलर यह समझने के लिए काफी स्मार्ट है कि आप संकलन करना चाहते हैं Person.java साथ ही फ़ाइल करें क्योंकि यह देख सकता है कि आपने पर्सनएक्सप्लिमेंट क्लास में इसका उपयोग किया है।

पैरामीटर्स का नामकरण

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

 // कंस्ट्रक्टर विधि
सार्वजनिक व्यक्ति (स्ट्रिंग प्रथम नाम, स्ट्रिंग अंतिम नाम, स्ट्रिंग पता, स्ट्रिंग उपयोगकर्ता नाम)
{
this.firstName = firstName;
this.lastName = lastName;
this.address = पता;
this.username = उपयोगकर्ता नाम;
}

"यह" कीवर्ड जावा कंपाइलर को बताता है कि जिस वेरिएबल को वैल्यू असाइन किया जाना है वह क्लास द्वारा परिभाषित किया गया है, न कि पैरामीटर। यह प्रोग्रामिंग शैली का सवाल है, लेकिन यह विधि हमें कई नामों का उपयोग किए बिना कंस्ट्रक्टर मापदंडों को परिभाषित करने में मदद करती है।

एक कंस्ट्रक्टर विधि से अधिक

अपनी ऑब्जेक्ट क्लासेस डिज़ाइन करते समय, आप केवल एक कंस्ट्रक्टर विधि का उपयोग करने के लिए सीमित नहीं हैं। आप तय कर सकते हैं कि एक वस्तु को इनिशियलाइज़ किया जा सकता है। एक से अधिक कंस्ट्रक्टर विधि का उपयोग करने पर एकमात्र बाधा यह है कि पैरामीटर अलग होना चाहिए।

कल्पना करें कि जिस समय हम व्यक्ति वस्तु बनाते हैं, उस समय हम उपयोगकर्ता नाम नहीं जानते होंगे। आइए एक नया कंस्ट्रक्टर विधि जोड़ें जो केवल पहले नाम, अंतिम नाम और पते का उपयोग करके व्यक्ति वस्तु की स्थिति निर्धारित करता है:

 पब्लिक क्लास पर्सन {
निजी स्ट्रिंग पहले नाम;
निजी स्ट्रिंग अंतिम नाम;
निजी स्ट्रिंग पता;
निजी स्ट्रिंग उपयोगकर्ता नाम;
// कंस्ट्रक्टर विधि
सार्वजनिक व्यक्ति (स्ट्रिंग प्रथम नाम, स्ट्रिंग अंतिम नाम, स्ट्रिंग पता, स्ट्रिंग उपयोगकर्ता नाम)
{
this.firstName = firstName;
this.lastName = lastName;
this.address = पता;
this.username = उपयोगकर्ता नाम;
}
// नई कंस्ट्रक्टर विधि
सार्वजनिक व्यक्ति (स्ट्रिंग पहले नाम, स्ट्रिंग अंतिम नाम, स्ट्रिंग पता)
{
this.firstName = firstName;
this.lastName = lastName;
this.address = पता;
this.username = "";
}
// स्क्रीन पर ऑब्जेक्ट की स्थिति प्रदर्शित करने के लिए एक विधि
सार्वजनिक शून्य प्रदर्शनचित्र ()
{
System.out.println ("नाम:" + firstName + "" + lastName);
System.out.println ("पता:" + पता);
System.out.println ("उपयोगकर्ता नाम:" + उपयोगकर्ता नाम);
}
}

ध्यान दें कि दूसरी निर्माण विधि को "व्यक्ति" भी कहा जाता है और यह एक मूल्य भी नहीं देता है। इसके और पहले कंस्ट्रक्टर विधि के बीच एकमात्र अंतर पैरामीटर है - इस बार यह केवल अपेक्षा करता है तीन स्ट्रिंग मान: FirstName, lastName, और पता।

अब हम दो अलग-अलग तरीकों से व्यक्ति ऑब्जेक्ट बना सकते हैं:

 सार्वजनिक वर्ग के व्यक्ति
सार्वजनिक स्थैतिक शून्य main (String [] args) {
व्यक्ति को = नया व्यक्ति ("डेव", "डेविडसन", "12 मुख्य सेंट", "डीडीवाड्सन");
व्यक्ति जीम = नया व्यक्ति ("जिम", "डेविडसन", "15 किंग्स रोड");
dave.displayPersonDetails ();
jim.displayPersonDetails ();
}
}

व्यक्ति डेव एक FirstName, lastName, पता और उपयोगकर्ता नाम के साथ बनाया जाएगा। व्यक्ति जिम, हालाँकि, एक उपयोगकर्ता नाम नहीं मिलेगा, यानी उपयोगकर्ता नाम रिक्त स्ट्रिंग होगा: उपयोगकर्ता नाम = ""।

एक त्वरित पुनर्प्राप्ति

कन्स्ट्रक्टर विधियाँ तभी कहलाती हैं जब किसी वस्तु का नया उदाहरण बनाया जाता है। वे:

  • कक्षा के समान नाम होना चाहिए
  • मान वापस न करें
  • कोई नहीं, एक, या हो सकता है कई मापदंडों
  • जब तक प्रत्येक निर्माण विधि में मापदंडों का एक अलग सेट है तब तक एक से अधिक संख्या हो सकती है
  • हो सकता है पैरामीटर नाम निजी क्षेत्रों के रूप में लंबे समय के रूप में "यह" कीवर्ड का उपयोग किया जाता है
  • "नया" कीवर्ड का उपयोग करने के लिए कहा जाता है
instagram story viewer