BCA / B.Tech 17 min read

Constructor in Hindi

Constructor in Java in Hindi |  जावा में कंस्ट्रक्टर हिंदी में :


कंस्ट्रक्टर (Constructor) एक विशेष प्रकार का मेथड होता है जिसका उपयोग किसी क्लास के ऑब्जेक्ट को प्रारंभ (initialize) करने के लिए किया जाता है। जब भी कोई नया ऑब्जेक्ट बनाया जाता है, तो कंस्ट्रक्टर स्वतः ही कॉल हो जाता है। कंस्ट्रक्टर का मुख्य कार्य किसी ऑब्जेक्ट के डेटा सदस्यों (data members) को प्रारंभिक मान प्रदान करना होता है।

कंस्ट्रक्टर एक महत्वपूर्ण टूल है जो ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग (OOP) में ऑब्जेक्ट को प्रारंभ करने और उसके डेटा सदस्यों को आवश्यक प्रारंभिक मान देने में मदद करता है। जावा में कंस्ट्रक्टर ओवरलोडिंग की सुविधा इसे और अधिक शक्तिशाली बनाती है, जिससे विभिन्न प्रकार के ऑब्जेक्ट्स को विभिन्न प्रारंभिक स्थितियों में तैयार किया जा सकता है।


कंस्ट्रक्टर क्या है?

कंस्ट्रक्टर एक ऐसा मेथड होता है जिसका नाम हमेशा उसी क्लास के नाम जैसा होता है जिसमें इसे परिभाषित किया गया हो। इसका उपयोग किसी ऑब्जेक्ट को प्रारंभ करने के लिए किया जाता है। कंस्ट्रक्टर का मुख्य काम होता है कि जब भी ऑब्जेक्ट बनता है, तब उस ऑब्जेक्ट को कुछ प्रारंभिक मान (initial values) दिए जाएँ।

जावा में, कंस्ट्रक्टर निम्नलिखित प्रमुख विशेषताएँ रखता है:

  • कंस्ट्रक्टर का नाम वही होता है जो क्लास का नाम होता है।
  • कंस्ट्रक्टर का कोई रिटर्न टाइप (return type) नहीं होता, यहाँ तक कि void भी नहीं।
  • जब ऑब्जेक्ट का निर्माण होता है, तो कंस्ट्रक्टर स्वतः ही कॉल होता है।
Types of Constructor in Java in Hindi | कंस्ट्रक्टर के प्रकार :

जावा में कंस्ट्रक्टर मुख्य रूप से तीन प्रकार के होते हैं:

1. डिफॉल्ट कंस्ट्रक्टर (Default Constructor)
2. पैरामीटराइज़्ड कंस्ट्रक्टर (Parameterized Constructor)
3. कॉपी कंस्ट्रक्टर (Copy Constructor) :

1. डिफॉल्ट कंस्ट्रक्टर (Default Constructor) :

डिफॉल्ट कंस्ट्रक्टर वह कंस्ट्रक्टर होता है जिसे प्रोग्रामर द्वारा विशेष रूप से परिभाषित नहीं किया जाता है, और यदि प्रोग्रामर द्वारा कोई कंस्ट्रक्टर परिभाषित नहीं किया गया हो, तो जावा कम्पाइलर स्वतः ही एक डिफॉल्ट कंस्ट्रक्टर प्रदान करता है।

डिफॉल्ट कंस्ट्रक्टर का कार्य होता है ऑब्जेक्ट बनाते समय उसे डिफॉल्ट मान (default values) प्रदान करना। उदाहरण के लिए, संख्यात्मक वेरिएबल्स को 0, बूलियन को false, और संदर्भ प्रकारों (reference types) को null मान दिया जाता है।

उदाहरण :

class Car {
    int speed;
    String model;

    // डिफॉल्ट कंस्ट्रक्टर
    Car() {
        speed = 100;
        model = "Generic Model";
    }

    void display() {
        System.out.println("Speed: " + speed);
        System.out.println("Model: " + model);
    }
}

public class Main {
    public static void main(String[] args) {
        Car myCar = new Car();  // डिफॉल्ट कंस्ट्रक्टर कॉल हो रहा है
        myCar.display();
    }
}
इस उदाहरण में, जब Car का ऑब्जेक्ट myCar बनाया जाता है, तो डिफॉल्ट कंस्ट्रक्टर स्वतः ही कॉल हो जाता है और speed को 100 और model को "Generic Model" सेट कर देता है।

2. पैरामीटराइज़्ड कंस्ट्रक्टर (Parameterized Constructor) :

जब कंस्ट्रक्टर में पैरामीटर्स (parameters) होते हैं, तो उसे पैरामीटराइज़्ड कंस्ट्रक्टर कहा जाता है। इस प्रकार के कंस्ट्रक्टर का उपयोग तब किया जाता है जब हमें ऑब्जेक्ट को किसी विशेष मान के साथ प्रारंभ करने की आवश्यकता होती है, जो कि प्रोग्राम के उपयोगकर्ता द्वारा प्रदान किए जाते हैं।

उदाहरण:

class Car {
    int speed;
    String model;

    // पैरामीटराइज़्ड कंस्ट्रक्टर
    Car(int s, String m) {
        speed = s;
        model = m;
    }

    void display() {
        System.out.println("Speed: " + speed);
        System.out.println("Model: " + model);
    }
}

public class Main {
    public static void main(String[] args) {
        Car myCar1 = new Car(120, "Toyota");  // पैरामीटराइज़्ड कंस्ट्रक्टर कॉल हो रहा है
        Car myCar2 = new Car(150, "Honda");
        
        myCar1.display();
        myCar2.display();
    }
}
इस उदाहरण में, पैरामीटराइज़्ड कंस्ट्रक्टर का उपयोग करके Car के दो ऑब्जेक्ट्स बनाए गए हैं। myCar1 के लिए स्पीड 120 और मॉडल "Toyota" सेट किया गया है, जबकि myCar2 के लिए स्पीड 150 और मॉडल "Honda" सेट किया गया है।


कॉपी कंस्ट्रक्टर (Copy Constructor) :

  • कॉपी कंस्ट्रक्टर (Copy ) वह कंस्ट्रक्टर होता है जिसका उपयोग एक ऑब्जेक्ट की कॉपी (प्रतिलिपि) बनाने के लिए किया जाता है। यह कंस्ट्रक्टर एक ऑब्जेक्ट को दूसरे ऑब्जेक्ट की मानों के साथ इनिशियलाइज़ करता है।
  • हालाँकि जावा में डिफ़ॉल्ट रूप से कॉपी कंस्ट्रक्टर उपलब्ध नहीं होता, लेकिन आप इसे मैन्युअली परिभाषित कर सकते हैं। कॉपी कंस्ट्रक्टर का मुख्य उद्देश्य होता है कि एक ऑब्जेक्ट के डेटा को दूसरे ऑब्जेक्ट में कॉपी करना, ताकि नया ऑब्जेक्ट समान डेटा के साथ बन सके।
  • कॉपी कंस्ट्रक्टर एक महत्वपूर्ण तकनीक है जब आपको किसी ऑब्जेक्ट की सटीक प्रतिलिपि बनानी हो। इसका उपयोग जावा में तब किया जाता है जब आप चाहते हैं कि एक ऑब्जेक्ट का डेटा दूसरे ऑब्जेक्ट में कॉपी हो, बिना रेफरेंस को कॉपी किए। जावा में कॉपी कंस्ट्रक्टर को मैन्युअली परिभाषित करना पड़ता है, लेकिन यह क्लोनिंग से अधिक लचीला और सुरक्षित तरीका हो सकता है।


कॉपी कंस्ट्रक्टर क्या है?

कॉपी कंस्ट्रक्टर एक प्रकार का कंस्ट्रक्टर होता है जिसमें पैरामीटर के रूप में उसी क्लास का ऑब्जेक्ट पास किया जाता है। इसका उपयोग करके किसी मौजूदा ऑब्जेक्ट की कॉपी बनाई जा सकती है।

कॉपी कंस्ट्रक्टर की संरचना :

class ClassName {
    ClassName(ClassName obj) {
        // ऑब्जेक्ट के डेटा को कॉपी करें
    }
}
उदाहरण :

मान लीजिए कि हमारे पास एक क्लास Car है, जिसमें speed और model के डेटा मेंबर हैं। हम इस क्लास में कॉपी कंस्ट्रक्टर को परिभाषित करके एक ऑब्जेक्ट से दूसरे ऑब्जेक्ट में इन मानों को कॉपी कर सकते हैं।

java
Copy code
class Car {
    int speed;
    String model;

    // पैरामीटराइज़्ड कंस्ट्रक्टर
    Car(int speed, String model) {
        this.speed = speed;
        this.model = model;
    }

    // कॉपी कंस्ट्रक्टर
    Car(Car carObj) {
        this.speed = carObj.speed;
        this.model = carObj.model;
    }

    void display() {
        System.out.println("Speed: " + speed);
        System.out.println("Model: " + model);
    }
}

public class Main {
    public static void main(String[] args) {
        Car car1 = new Car(120, "Toyota");  // पैरामीटराइज़्ड कंस्ट्रक्टर कॉल
        Car car2 = new Car(car1);  // कॉपी कंस्ट्रक्टर कॉल

        car1.display();  // car1 का डेटा डिस्प्ले
        car2.display();  // car2 का डेटा डिस्प्ले (car1 से कॉपी किया गया)
    }
}
इस उदाहरण में :

  • Car क्लास में speed और model नामक दो डेटा मेंबर्स हैं।
  • एक पैरामीटराइज़्ड कंस्ट्रक्टर Car(int, String) है जो speed और model को इनिशियलाइज़ करता है।
  • एक कॉपी कंस्ट्रक्टर Car(Car carObj) है जो किसी अन्य Car ऑब्जेक्ट से डेटा को कॉपी करता है।
  • car1 को पैरामीटराइज़्ड कंस्ट्रक्टर का उपयोग करके इनिशियलाइज़ किया गया, जबकि car2 को कॉपी कंस्ट्रक्टर के माध्यम से car1 से कॉपी किया गया।

कॉपी कंस्ट्रक्टर का उपयोग कब करें?

  • जब आप किसी ऑब्जेक्ट की एक सटीक कॉपी बनाना चाहते हैं और उसकी डेटा को मैन्युअली सेट करना नहीं चाहते।
  • जब आप यह सुनिश्चित करना चाहते हैं कि एक ऑब्जेक्ट के डेटा को दूसरे ऑब्जेक्ट में कॉपी किया जाए, बजाय रेफरेंस को कॉपी करने के।

कॉपी कंस्ट्रक्टर और डिफॉल्ट क्लोनिंग :

  • जावा में, आप clone() मेथड का उपयोग करके भी एक ऑब्जेक्ट की कॉपी बना सकते हैं। clone() मेथड Object क्लास में पहले से परिभाषित होता है। लेकिन यह एक शैलो (shallow) कॉपी बनाता है।
  • कॉपी कंस्ट्रक्टर का उपयोग करके, आप एक डीप कॉपी (deep copy) भी बना सकते हैं, जिससे किसी ऑब्जेक्ट के सभी डेटा मेंबर्स की स्वतंत्र कॉपी बनाई जा सके, न कि केवल रेफरेंस कॉपी।

शैलो कॉपी बनाम डीप कॉपी :

  • शैलो कॉपी (Shallow Copy) : शैलो कॉपी का मतलब है कि ऑब्जेक्ट के भीतर जो भी रेफरेंस टाइप के डेटा मेंबर्स होते हैं, उनकी केवल रेफरेंस कॉपी की जाती है। यानी दोनों ऑब्जेक्ट्स का डेटा भौतिक रूप से एक ही होता है।
  • डीप कॉपी (Deep Copy) : डीप कॉपी का मतलब है कि ऑब्जेक्ट के अंदर के सभी डेटा की वास्तविक कॉपी बनाई जाती है, न कि केवल रेफरेंस की। इसका मतलब है कि नई कॉपी पूरी तरह से स्वतंत्र होगी।

जावा में कॉपी कंस्ट्रक्टर के लाभ :

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

Benifits of Constructor in java in Hindi | जावा में कंस्ट्रक्टर के गुण :

  • कंस्ट्रक्टर का कोई रिटर्न टाइप नहीं होता: कंस्ट्रक्टर का रिटर्न टाइप नहीं होता, न ही void और न ही कोई अन्य टाइप।
  • कंस्ट्रक्टर का नाम क्लास के नाम जैसा होता है: कंस्ट्रक्टर का नाम हमेशा उसी क्लास के नाम जैसा होता है जिसमें वह परिभाषित होता है।
  • कंस्ट्रक्टर स्वतः ही कॉल होता है: जब भी किसी क्लास का नया ऑब्जेक्ट बनाया जाता है, तो कंस्ट्रक्टर स्वतः ही कॉल हो जाता है। हमें इसे मैन्युअली कॉल करने की आवश्यकता नहीं होती।
  • ओवरलोडिंग: जावा में, कंस्ट्रक्टर को ओवरलोड (overload) भी किया जा सकता है। इसका मतलब यह है कि एक ही क्लास में कई कंस्ट्रक्टर हो सकते हैं, जो अलग-अलग पैरामीटर्स के साथ हो सकते हैं। जब एक नया ऑब्जेक्ट बनता है, तो जावा कम्पाइलर यह तय करता है कि किस कंस्ट्रक्टर को कॉल करना है, इस आधार पर कि कौन सा कंस्ट्रक्टर ऑब्जेक्ट निर्माण के दौरान दिए गए पैरामीटर्स से मेल खाता है।

उदाहरण :

class Car {
    int speed;
    String model;

    // डिफॉल्ट कंस्ट्रक्टर
    Car() {
        speed = 100;
        model = "Generic Model";
    }

    // पैरामीटराइज़्ड कंस्ट्रक्टर
    Car(int s, String m) {
        speed = s;
        model = m;
    }

    void display() {
        System.out.println("Speed: " + speed);
        System.out.println("Model: " + model);
    }
}

public class Main {
    public static void main(String[] args) {
        Car myCar1 = new Car();  // डिफॉल्ट कंस्ट्रक्टर कॉल
        Car myCar2 = new Car(150, "Honda");  // पैरामीटराइज़्ड कंस्ट्रक्टर कॉल
        
        myCar1.display();
        myCar2.display();
    }
}
इस उदाहरण में, Car क्लास में दो कंस्ट्रक्टर ओवरलोड किए गए हैं - एक डिफॉल्ट और एक पैरामीटराइज़्ड। जब myCar1 का ऑब्जेक्ट बनाया गया, तो डिफॉल्ट कंस्ट्रक्टर कॉल हुआ, और जब myCar2 का ऑब्जेक्ट बनाया गया, तो पैरामीटराइज़्ड कंस्ट्रक्टर कॉल हुआ।

Use of Constructor in Java in Hindi | जावा में कंस्ट्रक्टर के उपयोग :

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

जावा में कंस्ट्रक्टर और मेथड के बीच अंतर :

  • नाम : कंस्ट्रक्टर का नाम हमेशा क्लास के नाम के समान होता है, जबकि मेथड का नाम कुछ भी हो सकता है।
  • रिटर्न टाइप : कंस्ट्रक्टर का कोई रिटर्न टाइप नहीं होता, जबकि मेथड का रिटर्न टाइप होता है (यह void भी हो सकता है)।
  • कॉलिंग : कंस्ट्रक्टर स्वतः ही तब कॉल होता है जब ऑब्जेक्ट बनाया जाता है, जबकि मेथड को मैन्युअली कॉल करना होता है।
  • उद्देश्य : कंस्ट्रक्टर का उद्देश्य किसी क्लास के ऑब्जेक्ट को प्रारंभ करना होता है, जबकि मेथड का उद्देश्य किसी कार्य को निष्पादित करना होता है।


In this Chapter

Constructor in Hindi
BCA || Java 2024 Paper || MDSU Exam Paper
What is Java, Characteristics of Java - Java क्या है और जावा की विशेषताएं
Difference between Java and C++ in Hindi. (Java और C++ में अंतर )
Applications of Java Programming in Hindi
OOPS concepts in Java Hindi
What is JVM and JRE in hindi
Features of JAVA in hindi
What is Java bean in hindi & advantage in Hindi
Difference between Java and JavaScript in Hindi
JIT Compiler in Hindi
What is Control Statement (structure) in Hindi
What is variable in hindi (वेरिएबल क्या होता है?):-
Java URL Class in Hindi
What is Java swing and its methods in Hindi
Operators in Java in Hindi
Class & Method in Hindi
Inheritance in Java in Hindi | जावा में इनहेरिटेंस हिंदी में
instance Operator in Hindi
Token in Hindi
Data Types in Hindi
Object-Oriented-Design in Hindi
Conditional Operator in Hindi
Constant in Hindi
Reference Variable in Hindi
Type Casting in Hindi
Literals in Hindi
Identifiers in Hindi
Array in Hindi
Anonymous Array in Hindi
Access Modifiers in Hindi
Enum Data type in Hindi
Keywords in Hindi-Java
Super Keywords in Hindi
Static Keywords in Hindi
Final Keywords in Hindi
New Operator in Hindi
Method Types in Hindi
Method Overloading in Hindi
Method Overriding in Hindi
Method Hiding in Hindi
Class & Object in Hindi
Diffrence Beetween Class & Object in Hindi
Math Class in Hindi
Abstraction in Hindi
Adapter Pattern in Hindi
Package in Hindi
Class & Structure in Java in Hindi
Exception Handling in Hindi