जावा में गोता लगाते समय, आपके सामने आने वाली मूलभूत अवधारणाओं में से एक कंस्ट्रक्टर्स है। ऑब्जेक्ट कैसे बनाए और आरंभ किए जाते हैं, इसमें कंस्ट्रक्टर महत्वपूर्ण भूमिका निभाते हैं। इस पोस्ट में, आप व्यावहारिक उदाहरणों के साथ जावा में कंस्ट्रक्टर्स, उनके महत्व, विभिन्न प्रकारों और उपयोग की स्पष्ट समझ प्राप्त करेंगे।
आप विभिन्न तरीकों से ऑब्जेक्ट को आरंभ करने और ऑब्जेक्ट निर्माण को संभालने में कंस्ट्रक्टर की भूमिका का भी पता लगाएंगे। तो, आइए गोता लगाएँ!
जावा में, एक कंस्ट्रक्टर किसी ऑब्जेक्ट के बनने पर उसे इनिशियलाइज़ करने के लिए उपयोग किया जाने वाला कोड का एक ब्लॉक होता है। यह ऑब्जेक्ट निर्माण के समय ऑब्जेक्ट की प्रारंभिक स्थिति को सेट करते हुए स्वचालित रूप से लागू हो जाता है। यदि किसी क्लास में कोई कंस्ट्रक्टर स्पष्ट रूप से परिभाषित नहीं है, तो जावा डिफ़ॉल्ट कंस्ट्रक्टर को कॉल करेगा।
कंस्ट्रक्टर नियमित तरीकों से दो महत्वपूर्ण तरीकों से भिन्न होते हैं:
कंस्ट्रक्टर आवश्यक हैं क्योंकि वे नई वस्तुओं को सुसंगत तरीके से आरंभ करने के लिए रूपरेखा प्रदान करते हैं। वे सुनिश्चित करते हैं कि प्रत्येक वस्तु वैध, सार्थक डेटा से शुरू होती है, जिससे किसी वस्तु की उसके पूरे जीवनचक्र में स्थिति को प्रबंधित करना आसान हो जाता है।
एक बार जब आप कंस्ट्रक्टर्स को समझ लेते हैं, तो आप इस बात की सराहना करेंगे कि जब कोई ऑब्जेक्ट नए कीवर्ड का उपयोग करके बनाया जाता है तो वे स्वचालित रूप से लागू हो जाते हैं।
जावा में तीन मुख्य प्रकार के कंस्ट्रक्टर हैं:
आइए प्रत्येक को विस्तार से बताएं।
ए नो-आर्ग्युमेंट कंस्ट्रक्टर एक कंस्ट्रक्टर है जो कोई पैरामीटर नहीं लेता है। यह ऑब्जेक्ट को डिफ़ॉल्ट मानों के साथ या कंस्ट्रक्टर के भीतर परिभाषित मानों के साथ प्रारंभ करता है।
class Rectangle { double length; double breadth; // No-argument constructor Rectangle() { length = 15.5; breadth = 10.67; } double calculateArea() { return length * breadth; } } class Main { public static void main(String[] args) { Rectangle myRectangle = new Rectangle(); // No-argument constructor is invoked double area = myRectangle.calculateArea(); System.out.println("The area of the Rectangle: " area); } }
आउटपुट: आयत का क्षेत्रफल 165.385 है।
यहाँ, जब एक रेक्टेंगल ऑब्जेक्ट बनाया जाता है, तो नो-आर्ग्युमेंट कंस्ट्रक्टर डिफ़ॉल्ट मानों के साथ लंबाई और चौड़ाई को आरंभ करता है।
एक पैरामीटरयुक्त कंस्ट्रक्टर आपको विशिष्ट मानों के साथ किसी ऑब्जेक्ट को प्रारंभ करने के लिए तर्क पारित करने की अनुमति देता है। यह लचीलापन आपको विभिन्न प्रारंभिक स्थितियों के साथ कई ऑब्जेक्ट बनाने में सक्षम बनाता है।
class Rectangle { double length; double breadth; // Parameterized constructor Rectangle(double l, double b) { length = l; breadth = b; } double calculateArea() { return length * breadth; } } class Main { public static void main(String[] args) { Rectangle myRectangle = new Rectangle(20, 30); // Parameterized constructor is invoked double area = myRectangle.calculateArea(); System.out.println("The area of the Rectangle: " area); } }
आउटपुट: आयत का क्षेत्रफल 600.0 है।
यहां, पैरामीटरयुक्त कंस्ट्रक्टर लंबाई और चौड़ाई को तर्क के रूप में स्वीकार करता है, जिससे हमें प्रत्येक ऑब्जेक्ट के लिए कस्टम मान सेट करने की अनुमति मिलती है।
यदि किसी क्लास में कोई कंस्ट्रक्टर परिभाषित नहीं है, तो जावा एक डिफ़ॉल्ट कंस्ट्रक्टर प्रदान करता है। यह कंस्ट्रक्टर इंस्टेंस वेरिएबल्स को डिफ़ॉल्ट मानों के साथ आरंभ करता है (उदाहरण के लिए, ऑब्जेक्ट के लिए शून्य, संख्याओं के लिए 0)।
class Circle { double radius; double calculateArea() { return Math.PI * radius * radius; } } class Main { public static void main(String[] args) { Circle myCircle = new Circle(); // Default constructor is invoked System.out.println("Radius: " myCircle.radius); // Output will be 0.0, the default value } }
चूंकि सर्कल क्लास किसी भी कंस्ट्रक्टर को स्पष्ट रूप से परिभाषित नहीं करता है, जावा एक डिफ़ॉल्ट प्रदान करता है जो त्रिज्या को 0.0 से प्रारंभ करता है।
जावा कंस्ट्रक्टर ओवरलोडिंग की अनुमति देता है, जहां एक क्लास में अलग-अलग तर्क सूचियों के साथ कई कंस्ट्रक्टर हो सकते हैं। प्रत्येक कंस्ट्रक्टर पारित मापदंडों के आधार पर एक अद्वितीय कार्य करता है।
class Student { String name; int age; // No-argument constructor Student() { name = "Unknown"; age = 0; } // Parameterized constructor Student(String n, int a) { name = n; age = a; } void displayInfo() { System.out.println("Name: " name ", Age: " age); } } class Main { public static void main(String[] args) { Student student1 = new Student(); // Calls no-argument constructor Student student2 = new Student("Alice", 20); // Calls parameterized constructor student1.displayInfo(); // Output: Name: Unknown, Age: 0 student2.displayInfo(); // Output: Name: Alice, Age: 20 } }
इस मामले में, क्लास स्टूडेंट के पास दो कंस्ट्रक्टर हैं: एक जिसमें कोई तर्क नहीं है और दूसरा पैरामीटर (नाम और उम्र) के साथ है। ऑब्जेक्ट बनाते समय पारित किए गए तर्कों की संख्या और प्रकार के आधार पर जावा उनके बीच अंतर करता है।
जावा में, इस कीवर्ड का उपयोग क्लास के वर्तमान उदाहरण को संदर्भित करने के लिए किया जाता है। यह तब उपयोगी होता है जब कंस्ट्रक्टर पैरामीटर के नाम इंस्टेंस वेरिएबल के समान होते हैं, जिससे अस्पष्टता से बचने में मदद मिलती है।
class Employee { String name; double salary; // Parameterized constructor Employee(String name, double salary) { this.name = name; // 'this' refers to the current object's instance variable this.salary = salary; } void display() { System.out.println("Employee Name: " name); System.out.println("Salary: " salary); } } class Main { public static void main(String[] args) { Employee emp = new Employee("John", 50000); // Using parameterized constructor emp.display(); } }
इस उदाहरण में, this.name इंस्टेंस वेरिएबल को संदर्भित करता है, जबकि इसके बिना नाम कंस्ट्रक्टर को दिए गए पैरामीटर को संदर्भित करता है।
कंस्ट्रक्टर | तरीका |
---|---|
कक्षा के समान नाम होना चाहिए | कोई भी नाम हो सकता है |
कोई रिटर्न प्रकार नहीं (यहां तक कि शून्य भी नहीं) | रिटर्न प्रकार होना चाहिए |
ऑब्जेक्ट बनने पर स्वचालित रूप से लागू हो जाता है | प्रोग्रामर द्वारा स्पष्ट रूप से कॉल किया गया |
वस्तुओं को प्रारंभ करने के लिए उपयोग किया जाता है | कार्य या गणना करने के लिए उपयोग किया जाता है |
अपनी खूबियों के बावजूद, जावा में कंस्ट्रक्टर कुछ चुनौतियों के साथ आते हैं:
कंस्ट्रक्टर जावा प्रोग्रामिंग का एक मूलभूत हिस्सा हैं। वे सुनिश्चित करते हैं कि वस्तुओं को उचित मूल्यों के साथ आरंभ किया गया है और ओवरलोडिंग के माध्यम से लचीलापन प्रदान करते हैं। जावा में महारत हासिल करने के लिए यह समझना महत्वपूर्ण है कि कंस्ट्रक्टर का प्रभावी ढंग से उपयोग कैसे किया जाए, चाहे वह बिना तर्क वाला हो, पैरामीटरयुक्त हो या डिफ़ॉल्ट हो।
आप कैसे हैं? आप किस प्रकार के कंस्ट्रक्टर का उपयोग करना पसंद करते हैं?
टिप्पणियों में अपने विचार और कोड स्निपेट साझा करें! यदि आपको यह लेख उपयोगी लगा, तो कृपया इसे ❤️ दें और अधिक जावा-संबंधित सामग्री के लिए मुझे फ़ॉलो करें!
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3