Follow Us
माध्यम चुनें / Select Medium:
Eng (English) Hindi (हिन्दी)
ICSE • कक्षा X • Information Technology • अध्याय 4
अनुमानित समय: 45 Mins
प्रगति: अध्ययनरत

कंस्ट्रक्टर्स (Constructors)

जावा में कंस्ट्रक्टर्स के लिए व्यापक शैक्षणिक मार्गदर्शिका। आरंभीकरण यांत्रिकी, डिफ़ॉल्ट बनाम पैरामीटरयुक्त कंस्ट्रक्टर, कंस्ट्रक्टर ओवरलोडिंग, 'यह' कीवर्ड, कंस्ट्रक्टर चेनिंग, कॉपी कंस्ट्रक्टर, कंस्ट्रक्टर बनाम विधि तुलना, और पूर्ण आईसीएसई बोर्ड प्रोग्रामिंग समाधान शामिल हैं।

यह अध्याय क्यों महत्वपूर्ण है

जावा में कंस्ट्रक्टर्स के लिए व्यापक शैक्षणिक मार्गदर्शिका। आरंभीकरण यांत्रिकी, डिफ़ॉल्ट बनाम पैरामीटरयुक्त कंस्ट्रक्टर, कंस्ट्रक्टर ओवरलोडिंग, 'यह' कीवर्ड, कंस्ट्रक्टर चेनिंग, कॉपी कंस्ट्रक्टर, कंस्ट्रक्टर बनाम विधि तुलना, और पूर्ण आईसीएसई बोर्ड प्रोग्रामिंग समाधान शामिल हैं।

अध्याय रूपरेखा एवं प्रगति

1 1। कंस्ट्रक्टर परिभाषा, वास्तुशिल्प...
2 2. कंस्ट्रक्टर के प्रकार: डिफ़ॉल्ट,...
3 3. 'यह' कीवर्ड: वेरिएबल शैडोइंग और...
4 4. कंस्ट्रक्टर ओवरलोडिंग और कॉपी कं...
5 5. कंस्ट्रक्टर बनाम सदस्य विधि: निश...
6 6. विनाश और कचरा संग्रहण जीवनचक्र
7 7. संपूर्ण आईसीएसई बोर्ड कार्यक्रम:...
8 8. संपूर्ण आईसीएसई बोर्ड कार्यक्रम:...

सम्पूर्ण सैद्धांतिक एवं वैचारिक अध्ययन

1। कंस्ट्रक्टर परिभाषा, वास्तुशिल्प भूमिका और अपरिवर्तनीयताएँ

कंस्ट्रक्टर एसेंशियल्स
ऑब्जेक्ट जीवनचक्र में कंस्ट्रक्टर्स की महत्वपूर्ण भूमिका:

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

तीन गैर-परक्राम्य वाक्यात्मक आविष्कार:
  1. सटीक नाम समानता: कंस्ट्रक्टर के पास संलग्न वर्ग के समान पहचानकर्ता होना चाहिए, जो पूंजीकरण से समान रूप से मेल खाता हो (उदाहरण के लिए, क्लास अकाउंट में, कंस्ट्रक्टर को अकाउंट() होना चाहिए)।
  2. शून्य रिटर्न प्रकार: एक कंस्ट्रक्टर का कोई रिटर्न प्रकार नहीं होता—यहां तक कि void भी नहीं।
    चेतावनी: यदि आप सार्वजनिक शून्य खाता() { ... } लिखते हैं, तो जावा कंपाइलर किसी त्रुटि की रिपोर्ट नहीं करेगा; इसके बजाय, यह इसे Account नामक एक नियमित सदस्य विधि के रूप में संकलित करेगा और इसे new Account() पर लागू नहीं करेगा!
  3. स्वचालित आमंत्रण: एक कंस्ट्रक्टर को सामान्य विधि की तरह स्पष्ट रूप से नहीं कहा जा सकता है (उदाहरण के लिए, obj.Account(); अमान्य सिंटैक्स है)। यह new ऑपरेटर के निष्पादन के दौरान स्वचालित रूप से लागू होता है।

2. कंस्ट्रक्टर के प्रकार: डिफ़ॉल्ट, गैर-पैरामीटरीकृत और पैरामीटरयुक्त

कंस्ट्रक्टर पदानुक्रम
जावा में कंस्ट्रक्टर्स का वर्गीकरण:
कंस्ट्रक्टर वर्गीकरणपरिभाषा एवं विशेषताएँवाक्य-विन्यास एवं उदाहरण
डिफॉल्ट कंस्ट्रक्टर एक अदृश्य, पैरामीटर-रहित कंस्ट्रक्टर को जावा कंपाइलर द्वारा स्वचालित रूप से तभी संश्लेषित किया जाता है जब क्लास में शून्य स्पष्ट रूप से परिभाषित कंस्ट्रक्टर होते हैं। यह संख्यात्मक फ़ील्ड को 0 से प्रारंभ करता है, संदर्भ को शून्य से और बूलियन को ग़लत से प्रारंभ करता है। // बाइटकोड में उत्पन्न:
सार्वजनिक छात्र() {सुपर(); }
नॉन-पैरामीटराइज़्ड कंस्ट्रक्टर प्रोग्रामर द्वारा कोडित एक स्पष्ट कंस्ट्रक्टर जो शून्य तर्क स्वीकार करता है। यह व्यावसायिक तर्क द्वारा परिभाषित पूर्व निर्धारित डिफ़ॉल्ट मान निर्दिष्ट करता है (उदाहरण के लिए, शेष = 500.0)। सार्वजनिक पुस्तक() {
शीर्षक = "शीर्षक रहित";
कीमत = 0.0;
}
पैरामीटराइज़्ड कंस्ट्रक्टर एक कंस्ट्रक्टर को औपचारिक पैरामीटर सूची के साथ परिभाषित किया गया है। यह ऑब्जेक्ट निर्माण के दौरान आने वाले तर्कों को स्वीकार करता है (new Book("Java", 450.0);) ताकि इंस्टेंस वेरिएबल को कस्टम प्रारंभिक स्थितियों में आरंभ किया जा सके। सार्वजनिक पुस्तक (स्ट्रिंग टी, डबल पी) {
  शीर्षक = टी;
  कीमत = पी;
}

3. 'यह' कीवर्ड: वेरिएबल शैडोइंग और कंस्ट्रक्टर चेनिंग

'यह' कीवर्ड
परिवर्तनीय छाया का समाधान:

जब किसी कंस्ट्रक्टर में औपचारिक पैरामीटर नाम इंस्टेंस वेरिएबल नामों के समान होते हैं, तो स्थानीय पैरामीटर इंस्टेंस वेरिएबल को 'छाया' (छिपा) देते हैं। this कीवर्ड एक अंतर्निहित संदर्भ चर है जो हीप पर वर्तमान में निष्पादित ऑब्जेक्ट इंस्टेंस की ओर इशारा करता है।

सार्वजनिक वर्ग कर्मचारी {
    निजी पूर्णांक एम्पआईडी;
    निजी स्ट्रिंग नाम;

    // पैरामीटर नाम इंस्टेंस वेरिएबल नामों से बिल्कुल मेल खाते हैं:
    सार्वजनिक कर्मचारी(int emPId, स्ट्रिंग नाम) {
        this.empId = empId; // 'this.empId' इंस्टेंस फ़ील्ड को संदर्भित करता है; 'empId' पैरामीटर को संदर्भित करता है
        यह.नाम = नाम;
    }
}
कंस्ट्रक्टर चेनिंग इसके माध्यम से():

कंस्ट्रक्टर चेनिंग this(...) का उपयोग करके एक ही कक्षा के भीतर एक कंस्ट्रक्टर को दूसरे कंस्ट्रक्टर से आमंत्रित करने की तकनीक है। जब कई ओवरलोडेड कंस्ट्रक्टर ओवरलैपिंग इनिशियलाइज़ेशन करते हैं तो यह कोड दोहराव को रोकता है।

अनिवार्य नियम: this(...) पर कॉल कंस्ट्रक्टर बॉडी में सबसे पहला निष्पादन योग्य कथन होना चाहिए।

4. कंस्ट्रक्टर ओवरलोडिंग और कॉपी कंस्ट्रक्टर

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

विधियों की तरह, एक ही क्लास के भीतर अलग-अलग पैरामीटर काउंट या पैरामीटर प्रकारों के साथ कई कंस्ट्रक्टर परिभाषाएँ प्रदान करके कंस्ट्रक्टर्स को ओवरलोड किया जा सकता है। यह क्लाइंट कोड को उपलब्ध इनपुट डेटा के आधार पर लचीले ढंग से ऑब्जेक्ट बनाने का अधिकार देता है।

कॉपी कंस्ट्रक्टर प्रतिमान:

ए कॉपी कंस्ट्रक्टर एक पैरामीटरयुक्त कंस्ट्रक्टर है जो समान वर्ग के मौजूदा ऑब्जेक्ट को अपने पैरामीटर के रूप में स्वीकार करता है और पारित ऑब्जेक्ट के फ़ील्ड के डुप्लिकेट के साथ नई ऑब्जेक्ट को प्रारंभ करता है:

सार्वजनिक वर्ग आयत {
    निजी पूर्णांक लंबाई, चौड़ाई;

    // सामान्य पैरामीटरयुक्त कंस्ट्रक्टर
    सार्वजनिक आयत(int l, int b) {
        लंबाई = एल; चौड़ाई = बी;
    }

    // कंस्ट्रक्टर कॉपी करें
    सार्वजनिक आयत (आयत मौजूदा) {
        यह.लंबाई = मौजूदा.लंबाई;
        यह.चौड़ाई = मौजूदा.चौड़ाई;
    }
}
// उपयोग: आयत r1 = नया आयत(10, 20);
// आयत r2 = नया आयत(r1); // r2 एक स्वतंत्र क्लोन है!

5. कंस्ट्रक्टर बनाम सदस्य विधि: निश्चित तुलनात्मक मैट्रिक्स

तुलनात्मक विश्लेषण
कंस्ट्रक्टर बनाम सदस्य विधि:
तुलनात्मक पैरामीटरकंस्ट्रक्टरसदस्य विधि
पहचानकर्ता / नामसंलग्न वर्ग नाम के बिल्कुल समान होना चाहिए।कोई भी वैध जावा पहचानकर्ता हो सकता है (उदाहरण के लिए, गणना).
रिटर्न प्रकारइसमें कोई रिटर्न प्रकार नहीं (void भी नहीं)।एक घोषित रिटर्न प्रकार (डेटा प्रकार या) होना चाहिए शून्य).
आह्वान ट्रिगरआह्वान स्वचालित रूप से नए इंस्टेंटेशन पर।आह्वान स्पष्ट रूप से डॉट ऑपरेटर का उपयोग करके (obj.method()).
निष्पादन आवृत्तिप्रत्येक ऑब्जेक्ट निर्माण के दौरान बिल्कुल एक बार निष्पादित करता है।ऑब्जेक्ट के दौरान कई बारआमंत्रित किया जा सकता है जीवन.
प्राथमिक उद्देश्यमेमोरी आवंटित करने और इंस्टेंस वेरिएबल्स को आरंभ करने के लिए।ऑपरेशनल लॉजिक निष्पादित करने और डेटा संसाधित करने के लिए।
डिफ़ॉल्ट प्रावधानयदि कोई परिभाषित नहीं है तो कंपाइलर द्वारा स्वचालित रूप से संश्लेषित किया जाता है।कंपाइलर द्वारा कभी भी स्वचालित रूप से प्रदान नहीं किया जाता है।

6. विनाश और कचरा संग्रहण जीवनचक्र

वस्तु विनाश
स्वचालित सफाई बनाम अंतिम रूप():

C++ जैसी भाषाओं में, प्रत्येक कंस्ट्रक्टर के पास आवंटित हीप मेमोरी को मैन्युअल रूप से जारी करने के लिए एक संबंधित Destructor (उदाहरण के लिए, ~ClassName()) होता है। जावा में, विध्वंसक मौजूद नहीं हैं क्योंकि मेमोरी प्रबंधन JVM कचरा कलेक्टर द्वारा पूरी तरह से स्वचालित है।

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

7. संपूर्ण आईसीएसई बोर्ड कार्यक्रम: बुकफेयर डिस्काउंट क्लास

बोर्ड क्लास कार्यान्वयन
मॉडल प्रोग्राम 1: आईसीएसई क्लासिक 'बुकफेयर' क्लास
आयात java.util.Scanner;

पब्लिक क्लास बुकफ़ेयर {
    // उदाहरण चर
    निजी स्ट्रिंग नाम;
    निजी दोगुनी कीमत;

    // 1. डिफ़ॉल्ट / गैर-पैरामीटरयुक्त कंस्ट्रक्टर
    सार्वजनिक पुस्तक मेला() {
        bname = "";
        कीमत = 0.0;
    }

    // 2. डेटा इनपुट करने के लिए सदस्य विधि
    सार्वजनिक शून्य इनपुट() {
        स्कैनर इन = नया स्कैनर (System.in);
        System.out.print('पुस्तक का नाम दर्ज करें:');
        bname = in.nextLine();
        System.out.print('पुस्तक मूल्य दर्ज करें: रु.');
        कीमत = in.nextDouble();
    }

    // 3. रियायती मूल्य की गणना करने के लिए सदस्य विधि
    सार्वजनिक शून्य गणना() {
        दोगुना छूट प्रतिशत;
        अगर (कीमत <= 1000.0) {
            discountPercent = 2.0;
        } else if (price <= 3000.0) {
            discountPercent = 10.0;
        } else {
            discountPercent = 15.0;
        }

        double discountAmount = (price * discountPercent) / 100.0;
        price = price - discountAmount;
    }

    // 4. Member Method to display details
    public void display() {
        System.out.println("--------------------------------");
        System.out.println("BOOK FAIR INVOICE");
        System.out.println("Book Name          : " + bname);
        System.out.println("Price After Discount: Rs. " + price);
        System.out.println("--------------------------------");
    }

    public static void main(String[] args) {
        BookFair book = new BookFair(); // Constructor executes here!
        book.input();
        book.calculate();
        book.display();
    }
}

8. संपूर्ण आईसीएसई बोर्ड कार्यक्रम: रेलवे टिकट आरक्षण श्रेणी

बोर्ड क्लास कार्यान्वयन
मॉडल प्रोग्राम 2: आईसीएसई 'रेलवे टिकट' आरक्षण प्रणाली
आयात java.util.Scanner;

सार्वजनिक श्रेणी रेलवे टिकट {
    निजी स्ट्रिंग नाम;
    निजी स्ट्रिंग कोच;
    निजी लंबा mobno;
    निजी इंट एएमटी;
    निजी डबल टोटलमट;

    // पैरामीटरयुक्त कंस्ट्रक्टर
    सार्वजनिक रेलवे टिकट (स्ट्रिंग नाम, स्ट्रिंग कोच, लॉन्ग मोबनो, इंट एएमटी) {
        यह.नाम = नाम;
        यह.कोच = कोच;
        यह.मोबनो = मोबनो;
        यह.amt = amt;
        यह.टोटलमट = 0.0;
    }

    सार्वजनिक शून्य गणना() {
        पूर्णांक अधिभार = 0;
        यदि (coach.equalsIgnoreCase("First_AC")) {
            अधिभार = 700;
        } अन्यथा यदि (coach.equalsIgnoreCase("Second_AC")) {
            अधिभार = 500;
        } अन्यथा यदि (coach.equalsIgnoreCase("Thurd_AC")) {
            अधिभार = 250;
        } अन्यथा यदि (coach.equalsIgnoreCase("स्लीपर")) {
            अधिभार = 0;
        }
        कुल राशि = राशि + अधिभार;
    }

    सार्वजनिक शून्य प्रदर्शन() {
        System.out.println('================================');
        System.out.println('भारतीय रेलवे आरक्षण पर्ची');
        System.out.println('यात्री का नाम :' + नाम);
        System.out.println('कोच चयनित:' + कोच);
        System.out.println('मोबाइल नंबर :' + mobno);
        System.out.println('आधार राशि: रु.' + एएमटी);
        System.out.println('कुल देय: रु.' + कुल राशि);
        System.out.println('================================');
    }

    सार्वजनिक स्थैतिक शून्य मुख्य(स्ट्रिंग[] तर्क) {
        रेलवे टिकट टिकट = नया रेलवे टिकट ("विक्रम सिंघानिया", "फर्स्ट_एसी", 9876543210एल, 1850);
        टिकट.कंप्यूट();
        टिकट.डिस्प्ले();
    }
}

सामान्य गलतियाँ एवं परीक्षक के जाल (Examiner Traps)

सामान्य भ्रम / गलत उत्तर

कन्स्ट्रक्टर परिभाषा में एक शून्य रिटर्न प्रकार जोड़ना

सही वैज्ञानिक तथ्य

कंस्ट्रक्टर्स के पास कोई रिटर्न प्रकार नहीं होना चाहिए। 'शून्य' जोड़ने से यह एक सामान्य सदस्य विधि में परिवर्तित हो जाता है।

सामान्य भ्रम / गलत उत्तर

इस(...) कंस्ट्रक्टर चेनिंग स्टेटमेंट को लाइन 2 या बाद में रखने पर

सही वैज्ञानिक तथ्य

'इस(...)' पर कॉल कंस्ट्रक्टर बॉडी के अंदर सबसे पहला स्टेटमेंट होना चाहिए।

सामान्य भ्रम / गलत उत्तर

यह मानते हुए कि कंपाइलर एक डिफ़ॉल्ट कंस्ट्रक्टर प्रदान करता है जब एक पैरामीटरयुक्त लिखा जाता है

सही वैज्ञानिक तथ्य

किसी भी पैरामीटरयुक्त को परिभाषित करना कंस्ट्रक्टर स्वचालित डिफ़ॉल्ट कंस्ट्रक्टर को अक्षम कर देता है। यदि आवश्यक हो तो आपको स्पष्ट रूप से एक शून्य-तर्क कंस्ट्रक्टर लिखना होगा।

सामान्य भ्रम / गलत उत्तर

किसी मौजूदा ऑब्जेक्ट पर डॉट ऑपरेटर का उपयोग करके कंस्ट्रक्टर को आमंत्रित करने का प्रयास करना

सही वैज्ञानिक तथ्य

कंस्ट्रक्टर्स को डॉट ऑपरेटर के माध्यम से नहीं बुलाया जा सकता है (उदाहरण के लिए, 'obj.Student();' अवैध है)। इनका आह्वान केवल 'नए' के ​​माध्यम से किया जाता है।

आर्किटेक्चरल ब्लूप्रिंट: कंस्ट्रक्टर्स

ICSE Class 10 Java : Constructor Architecture & Object Initialization Lifecycle 1. Special Properties • Name Parity: Exact same name as Class • No Return Type: NOT even void! • Auto Invocation: Invoked via 'new' operator • Primary Goal: Initialize instance state in Heap 2. Constructor Types • Default Constructor: Auto-created by JVM if none coded. • Non-Parameterized: Explicitly coded with 0 parameters. • Parameterized: Accepts arguments for custom state. • Copy Constructor: Duplicates state of another object. 3. The 'this' Keyword • Current Instance Ref: Refers to invoking object in Heap. • Variable Shadowing: this.name = name; resolves clash. • Constructor Chaining: this(args); calls sibling constructor. MUST be line 1 in constructor! 4. Constructor vs Method • Return Type: Constructor: None | Method: Required • Invocation: Constructor: via 'new' | Method: via dot • Overloading: Multiple constructors with distinct signatures. Enables flexible instantiation. Crucial ICSE Constructor Invariant Principles • Loss of Default Constructor: If a programmer defines ANY constructor (even parameterized), the compiler removes the default constructor. • Constructor Return Type Myth: If a return type (even void) is added, Java treats it as a normal method, NOT a constructor! • Invocation Frequency: A constructor is executed exactly ONCE per object creation during the new lifecycle.

अध्याय का सार संक्षेप एवं 10 मुख्य निष्कर्ष

मुख्य बिंदु 1
कंस्ट्रक्टर एक विशेष सदस्य फ़ंक्शन है जिसका नाम बिल्कुल क्लास के समान है, जो नए इंस्टेंटियेटेड ऑब्जेक्ट के इंस्टेंस वेरिएबल्स को प्रारंभ करने के लिए समर्पित है।
मुख्य बिंदु 2
कंस्ट्रक्टर्स के पास कोई रिटर्न प्रकार नहीं है - यहां तक ​​कि `void` भी नहीं। रिटर्न प्रकार निर्दिष्ट करने से यह एक सामान्य सदस्य विधि में बदल जाता है।
मुख्य बिंदु 3
कंस्ट्रक्टर स्वचालित रूप से जावा रनटाइम द्वारा लागू होते हैं जब किसी ऑब्जेक्ट को `new` ऑपरेटर का उपयोग करके इंस्टेंट किया जाता है।
मुख्य बिंदु 4
A डिफ़ॉल्ट कंस्ट्रक्टर कोई पैरामीटर नहीं लेता है और स्वचालित रूप से जावा कंपाइलर द्वारा प्रदान किया जाता है केवल अगर प्रोग्रामर द्वारा कोई कंस्ट्रक्टर स्पष्ट रूप से परिभाषित नहीं किया जाता है।
मुख्य बिंदु 5
किसी भी कस्टम कंस्ट्रक्टर को परिभाषित करना (पैरामीटरीकृत या गैर-पैरामीटरयुक्त) कंपाइलर को अपने स्वचालित डिफ़ॉल्ट कंस्ट्रक्टर को वापस लेने का कारण बनता है।
मुख्य बिंदु 6
पैरामीटराइज्ड कंस्ट्रक्टर ऑब्जेक्ट निर्माण के दौरान बाहरी तर्कों को पारित करने की अनुमति देते हैं, यह सुनिश्चित करते हुए कि ऑब्जेक्ट को विशिष्ट, गतिशील प्रारंभिक स्थितियों के साथ प्रारंभ किया जा सकता है।
मुख्य बिंदु 7
कंस्ट्रक्टर ओवरलोडिंग एक वर्ग को विविध इंस्टेंशियेशन वर्कफ़्लो का समर्थन करने के लिए अलग-अलग पैरामीटर गणना या प्रकारों के साथ कई कंस्ट्रक्टरों को परिभाषित करने की अनुमति देता है।
मुख्य बिंदु 8
`this` संदर्भ चर वर्तमान आह्वान उदाहरण को इंगित करता है और जब पैरामीटर नाम उदाहरण चर नामों से मेल खाते हैं तो परिवर्तनीय छाया को हल करता है।
मुख्य बिंदु 9
एक ही कक्षा के भीतर एक सहोदर कंस्ट्रक्टर को आमंत्रित करने के लिए `this(...)` का उपयोग करके कंस्ट्रक्टर चेनिंग प्राप्त की जाती है; `this(...)` सबसे पहला कथन होना चाहिए।
मुख्य बिंदु 10
सदस्य विधियों के विपरीत, जिन्हें किसी ऑब्जेक्ट के पूरे जीवन में डॉट ऑपरेटर के माध्यम से बार-बार लागू किया जा सकता है, एक कंस्ट्रक्टर प्रति ऑब्जेक्ट निर्माण केवल एक बार निष्पादित करता है।

स्व-मूल्यांकन अभ्यास (Check Your Understanding)

मूल वैचारिक स्पष्टता की जांच के लिए नैदानिक प्रश्न। पहले स्वयं हल करें, फिर उत्तर देखें।

1
जावा में एक कंस्ट्रक्टर को परिभाषित करें। दो विशेष विशेषताएं बताएं जो इसे नियमित तरीकों से अलग करती हैं।
उत्तर एवं व्याख्या देखें
उत्तर: A कंस्ट्रक्टर एक क्लास के भीतर एक विशेष सदस्य फ़ंक्शन है जिसे किसी ऑब्जेक्ट के इंस्टेंट होने पर उसके नए आवंटित इंस्टेंस वेरिएबल को प्रारंभ करने के लिए डिज़ाइन किया गया है। दो विशिष्ट विशेषताएं: 1. इसका नाम बिल्कुल वर्ग जैसा ही है। 2. इसका कोई रिटर्न प्रकार नहीं है ('शून्य' भी नहीं)। 3. इसे डॉट ऑपरेटर के माध्यम से लागू नहीं किया जा सकता है; जब 'नया' कीवर्ड मेमोरी में एक ऑब्जेक्ट बनाता है तो यह स्वचालित रूप से निष्पादित होता है।
2
डिफ़ॉल्ट कंस्ट्रक्टर क्या है? किस विशिष्ट स्थिति में जावा कंपाइलर एक प्रदान नहीं करता है?
उत्तर एवं व्याख्या देखें
उत्तर: डिफॉल्ट कंस्ट्रक्टर एक शून्य-तर्क कंस्ट्रक्टर है जो संकलन के दौरान जावा कंपाइलर द्वारा स्वचालित रूप से उत्पन्न होता है यदि और केवल तभी जब क्लास में कोई स्पष्ट कंस्ट्रक्टर परिभाषा न हो। यह सभी इंस्टेंस फ़ील्ड के लिए डिफ़ॉल्ट शून्य-समतुल्य मान निर्दिष्ट करता है। यदि प्रोग्रामर क्लास में किसी भी कंस्ट्रक्टर को परिभाषित करता है (चाहे पैरामीटरयुक्त या गैर-पैरामीटरयुक्त) तो कंपाइलर एक डिफ़ॉल्ट कंस्ट्रक्टर प्रदान नहीं करता है।
3
वेरिएबल शैडोइंग क्या है, और 'यह' कीवर्ड इसे कंस्ट्रक्टर्स के भीतर कैसे हल करता है?
उत्तर एवं व्याख्या देखें
उत्तर: वेरिएबल शैडोइंग तब होती है जब किसी कंस्ट्रक्टर में औपचारिक पैरामीटर क्लास के इंस्टेंस वेरिएबल के समान पहचानकर्ता नाम साझा करते हैं; कंस्ट्रक्टर के दायरे में, पैरामीटर इंस्टेंस वेरिएबल को छाया देता है (प्राथमिकता लेता है)। 'यह' कीवर्ड एक अंतर्निहित संदर्भ चर है जो हीप पर वर्तमान निष्पादन ऑब्जेक्ट इंस्टेंस की ओर इशारा करता है। इंस्टेंस वेरिएबल को 'यह' के साथ उपसर्ग करना। (उदाहरण के लिए, 'this.name = name;') स्पष्ट रूप से कंपाइलर को हीप ऑब्जेक्ट के इंस्टेंस वेरिएबल के लिए स्थानीय पैरामीटर निर्दिष्ट करने का निर्देश देता है।
4
वास्तविक दुनिया के प्रोग्रामिंग परिदृश्य के साथ कंस्ट्रक्टर ओवरलोडिंग की व्याख्या करें।
उत्तर एवं व्याख्या देखें
उत्तर: कंस्ट्रक्टर ओवरलोडिंग तब होती है जब एक क्लास एक ही क्लास नाम लेकिन अलग-अलग पैरामीटर सूचियों (अलग-अलग संख्या, प्रकार या पैरामीटर के क्रम) के साथ कई कंस्ट्रक्टर घोषित करता है। उदाहरण के लिए, एक 'स्टूडेंट' वर्ग एक गैर-पैरामीटरयुक्त कंस्ट्रक्टर 'स्टूडेंट()' प्रदान कर सकता है, जो ऐसे मामलों के लिए एक पैरामीटरयुक्त कंस्ट्रक्टर 'स्टूडेंट (स्ट्रिंग नेम, इंट रोलनो)' के साथ-साथ डिफ़ॉल्ट मान निर्दिष्ट करता है, जहां ऑब्जेक्ट इंस्टेंशियेशन समय पर पूरी छात्र जानकारी तुरंत ज्ञात हो जाती है।
5
कंस्ट्रक्टर चेनिंग क्या है? this() का उपयोग करते समय अनिवार्य वाक्यविन्यास नियम बताएं।
उत्तर एवं व्याख्या देखें
उत्तर: कंस्ट्रक्टर चेनिंग वह अभ्यास है जहां एक कंस्ट्रक्टर 'this(...)' कीवर्ड का उपयोग करके उसी क्लास के भीतर दूसरे ओवरलोडेड कंस्ट्रक्टर को आमंत्रित करता है। यह एकाधिक कंस्ट्रक्टरों में अनावश्यक कोड से बचाता है। अनिवार्य वाक्यविन्यास नियम यह है कि 'इस(...)' के लिए कॉल कॉलिंग कंस्ट्रक्टर के शरीर में सबसे पहला निष्पादन योग्य कथन होना चाहिए; इसे किसी भी अगली पंक्ति पर रखने से संकलन-समय त्रुटि होती है।
6
यदि कोई प्रोग्रामर गलती से किसी कंस्ट्रक्टर के लिए रिटर्न प्रकार (जैसे शून्य) निर्दिष्ट करता है तो क्या होता है?
उत्तर एवं व्याख्या देखें
उत्तर: यदि कंस्ट्रक्टर घोषणा में रिटर्न प्रकार (जैसे 'void' या 'int') निर्दिष्ट किया गया है (उदाहरण के लिए, 'public void student()'), तो जावा कंपाइलर अब इसे कंस्ट्रक्टर के रूप में नहीं मानता है। इसके बजाय, यह इसे एक नियमित सदस्य विधि के रूप में संकलित करता है जो वर्ग नाम साझा करने के लिए होता है। नतीजतन, यह 'नए छात्र()' के दौरान निष्पादित नहीं होगा, उदाहरण चर को केवल भाषा डिफ़ॉल्ट मानों के लिए प्रारंभ किया जाएगा।
7
जावा में कॉपी कंस्ट्रक्टर क्या है? इसे कैसे लागू किया जाता है?
उत्तर एवं व्याख्या देखें
उत्तर: A कॉपी कंस्ट्रक्टर एक विशेष कंस्ट्रक्टर है जो उसी क्लास के पहले से मौजूद ऑब्जेक्ट की स्थिति को कॉपी करके एक नया ऑब्जेक्ट बनाता है। यह अपने स्वयं के वर्ग के एक ऑब्जेक्ट को एक औपचारिक पैरामीटर के रूप में स्वीकार करता है (उदाहरण के लिए, 'सार्वजनिक प्वाइंट (प्वाइंट पी)') और पैरामीटर ऑब्जेक्ट से फ़ील्ड मानों को नए इंस्टेंटियेटेड ऑब्जेक्ट ('this.x = p.x; this.y = p.y;') में कॉपी करता है, जिससे एक स्वतंत्र डुप्लिकेट प्राप्त होता है।
8
जावा में C++ जैसे 'डिस्ट्रक्टर्स' की सुविधा क्यों नहीं है?
उत्तर एवं व्याख्या देखें
उत्तर: जावा में विध्वंसक नहीं हैं क्योंकि इसमें स्वचालित कचरा संग्रहण (जीसी) की सुविधा है। मैन्युअल मेमोरी प्रबंधन (जैसे C++) वाली भाषाओं में, हीप मेमोरी को रिलीज़ करने के लिए डिस्ट्रक्टर्स को स्पष्ट रूप से लिखा जाना चाहिए। जावा में, जेवीएम रनटाइम लगातार ऑब्जेक्ट संदर्भों की निगरानी करता है और स्वचालित रूप से गैर-संदर्भित ऑब्जेक्ट्स द्वारा कब्जा की गई हीप मेमोरी को हटा देता है, जिससे मैन्युअल डिस्ट्रक्टर्स अनावश्यक हो जाते हैं।
अध्याय का अध्ययन पूर्ण हुआ?
अभ्यास के लिए तैयार?

ऑनलाइन CBT टेस्ट देकर तैयारी का मूल्यांकन करें

झारखण्ड बोर्ड परीक्षा पैटर्न पर आधारित बहुविकल्पीय प्रश्नों का ऑनलाइन टेस्ट दें। तुरंत परिणाम, समय विश्लेषण और प्रत्येक प्रश्न का विस्तृत हल प्राप्त करें।