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

उपयोगकर्ता-परिभाषित तरीके (User-defined Methods)

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

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

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

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

1 1। विधियों, प्रतिरूपकता और विधि एना...
2 2. वास्तविक बनाम औपचारिक पैरामीटर औ...
3 3. मूल्य द्वारा कॉल बनाम संदर्भ द्व...
4 4. शुद्ध (एक्सेसर) बनाम अशुद्ध (म्य...
5 5. रिटर्न स्टेटमेंट और मेथड टर्मिने...
6 6. विधि अधिभार: संकलन-समय बहुरूपता
7 7. पूर्ण आईसीएसई बोर्ड कार्यक्रम: अ...
8 8. संपूर्ण आईसीएसई बोर्ड कार्यक्रम:...

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

1। विधियों, प्रतिरूपकता और विधि एनाटॉमी की आवश्यकता

मेथड फ़ाउंडेशन
कार्यक्रमों को विधियों में विघटित क्यों करें?

सॉफ्टवेयर इंजीनियरिंग में, मोनोलिथिक प्रोग्राम जहां सभी कोड एक एकल main() विधि के अंदर रहते हैं, खराब पठनीयता, उच्च बग घनत्व और शून्य पुन: प्रयोज्यता से ग्रस्त हैं। उपयोगकर्ता-परिभाषित विधियां मॉड्युलैरिटी (फूट डालो और जीतो) के सिद्धांत को अपनाकर इन बाधाओं को हल करती हैं।

  • कोड पुन: प्रयोज्य: तर्क को एक बार लिखें (उदाहरण के लिए, कर गणना, अभाज्य संख्या की जांच) और विभिन्न इनपुट के साथ इसे हजारों बार लागू करें।
  • अमूर्त और सूचना छिपाना: कॉल करने वाले एक विधि का उपयोग यह जानकर करते हैं कि क्या यह करता है बिना निरीक्षण किए कैसे यह कार्य को आंतरिक रूप से पूरा करता है।
  • प्रबंधनीयता और डिबगिंग: तर्क को अलग-अलग तरीकों में अलग करने से लक्षित इकाई परीक्षण, तीव्र त्रुटि स्थानीयकरण और स्वच्छ कोड रखरखाव सक्षम हो जाता है।
विधि शीर्षलेख की संपूर्ण शारीरिक रचना:
पब्लिक स्टेटिक इंट कैलकुलेटजीसीडी(इंट ए, इंट बी) { ... }
घटककीवर्ड/टोकनउद्देश्य और अर्थ संबंधी नियम
एक्सेस स्पेसिफायर§50सार्वजनिकदृश्यता दायरे को परिभाषित करता है (सार्वजनिक, निजी हो सकता है, संरक्षित, या डिफ़ॉल्ट).
संशोधकstatic (वैकल्पिक)निर्दिष्ट करता है कि क्या विधि क्लास (किसी ऑब्जेक्ट के बिना लागू) से संबंधित है या किसी इंस्टेंस से संबंधित है।
रिटर्न प्रकारintकॉलर को लौटाए गए मान का डेटा प्रकार। यदि कोई मान नहीं लौटाया जाता है तो void का उपयोग करें।
विधि नामगणनाजीसीडीएक वैध जावा पहचानकर्ता, पारंपरिक रूप से लोअरकैमलकेस क्रियाओं का उपयोग करके नामित किया गया है।
पैरामीटर सूची(int a, int b)डेटा प्रकार और चर नामों को निर्दिष्ट करने वाले औपचारिक मापदंडों की अल्पविराम से अलग की गई सूची।
मेथड बॉडी{ ... }मेथड लागू होने पर निष्पादित बयानों का संलग्न ब्लॉक।

2. वास्तविक बनाम औपचारिक पैरामीटर और तर्क पारित करना

पैरामीटर यांत्रिकी
वास्तविक बनाम औपचारिक पैरामीटर:

विधि संचार में, डेटा दो अलग-अलग पैरामीटर अभ्यावेदन के माध्यम से कॉल करने वाले से कॉल प्राप्तकर्ता तक यात्रा करता है:

  • वास्तविक पैरामीटर (तर्क): विधि आह्वान के बिंदु पर कोष्ठक के अंदर दिए गए ठोस अभिव्यक्ति, चर, या शाब्दिक स्थिरांक (उदाहरण के लिए, int res = obj.add(x, 25);, x और §1516§ वास्तविक पैरामीटर हैं).
  • औपचारिक पैरामीटर: विधि परिभाषा शीर्षलेख में घोषित प्लेसहोल्डर वेरिएबल जो आने वाले डेटा को प्राप्त करते हैं (उदाहरण के लिए, सार्वजनिक int add(int num1, int num2), num1 और num2 में औपचारिक हैं पैरामीटर).
मानदंडवास्तविक पैरामीटरऔपचारिक पैरामीटर
स्थानविधि कॉल स्टेटमेंट में दिखाई दें।विधि हेडर परिभाषा में दिखाई दें।
प्रकृति स्थिरांक (5), चर (x), या जटिल अभिव्यक्ति (a + b * 2) हो सकते हैं।हमेशा परिवर्तनशील होना चाहिए स्पष्ट डेटा प्रकारों के साथ घोषणाएँ.
मेमोरीकॉलर के स्टैक फ्रेम से संबंधित।कैली के स्टैक फ्रेम पर स्थानीय चर के रूप में आवंटित।

3. मूल्य द्वारा कॉल बनाम संदर्भ द्वारा कॉल (गहराई से ट्रेसिंग)

पैरामीटर पासिंग मॉडल
सार्वभौमिक सत्य: जावा पूरी तरह से 'पास-बाय-वैल्यू' है:

छात्रों के बीच एक क्लासिक गलत धारणा यह है कि जावा पास-बाय-वैल्यू और पास-बाय-रेफरेंस दोनों का समर्थन करता है। वास्तव में, Java हर चीज़ को value के आधार पर पास करता है। हालाँकि, पारित मान आदिम और संदर्भ प्रकारों के बीच मौलिक रूप से भिन्न है:

1. मूल्य के अनुसार कॉल करें (आदिम प्रकार):

जब एक आदिम चर (इंट, डबल, चार) पारित किया जाता है, तो उसके मूल्य की एक बिटवाइज़ कॉपी कैली के स्टैक फ्रेम पर औपचारिक पैरामीटर में डुप्लिकेट की जाती है। विधि के अंदर औपचारिक पैरामीटर का कोई भी पुनर्मूल्यांकन या उत्परिवर्तन केवल स्थानीय प्रतिलिपि को प्रभावित करता है; कॉल करने वाले का मूल वेरिएबल 100% अछूता रहता है।

शून्य स्वैप(int x, int y) {
    int अस्थायी = x; एक्स = वाई; y = तापमान;
}
// कॉलर: int a = 5, b = 10;
// स्वैप (ए, बी);
// आउटपुट: a 5 रहता है, b 10 रहता है!
2. संदर्भ द्वारा कॉल करें (ऑब्जेक्ट और सरणी प्रकार):

जब कोई ऑब्जेक्ट या ऐरे पास किया जाता है, तो संदर्भ पता (हीप की ओर इशारा करने वाला 64-बिट पॉइंटर) औपचारिक पैरामीटर में कॉपी किया जाता है। वास्तविक और औपचारिक दोनों संदर्भ अब बिल्कुल समान भौतिक हीप मेमोरी ब्लॉक की ओर इशारा करते हैं। ऑब्जेक्ट फ़ील्ड या सरणी तत्वों को संशोधित करने से साझा हीप स्थिति बदल जाती है!

void mutate(int[] arr) {
    गिरफ्तारी[0] = 999;
}
// कॉलर: int[] अंक = {10, 20};
// उत्परिवर्तित करें (संख्या);
// आउटपुट: अंक[0] 999 हो जाता है!

4. शुद्ध (एक्सेसर) बनाम अशुद्ध (म्यूटेटर) विधियाँ

कार्यात्मक वर्गीकरण
शुद्ध तरीके बनाम अशुद्ध तरीके:
वर्गीकरण शुद्ध विधि (एक्सेसर/गेटर) अशुद्ध विधि (म्यूटेटर/सेटर)
प्राथमिक उद्देश्य किसी भी सिस्टम स्थिति को संशोधित किए बिना इनपुट तर्कों के आधार पर मान पुनर्प्राप्त या गणना करता है। आह्वान वस्तु की आंतरिक स्थिति (उदाहरण चर) को संशोधित करता है या संदर्भ मापदंडों को बदलता है।
साइड इफेक्ट्स शून्य दुष्प्रभाव। समान इनपुट के साथ विधि को कई बार कॉल करने से समान परिणाम मिलते हैं। इसके दुष्प्रभाव हैं। हीप में मेमोरी स्थिति बदलता है, फ़ाइलों को अद्यतन करता है, या वैश्विक चर बदलता है।
रिटर्न प्रकार लगभग हमेशा गैर-शून्य (गणना किए गए परिणाम लौटाता है)। अक्सर void (या एक बूलियन स्थिति ध्वज लौटाता है)।
उदाहरण int getSquare(int n) { return n * n; }
डबल गेटरेडियस() { वापसी त्रिज्या; }
void setRadius(double r) { this.radius = r; }
शून्य जमा (डबल राशि) { शेष += राशि; }

5. रिटर्न स्टेटमेंट और मेथड टर्मिनेशन मैकेनिक्स

रिटर्न स्टेटमेंट नियम
जावा में 'रिटर्न' स्टेटमेंट को नियंत्रित करने वाले नियम:
  1. नियंत्रण का तत्काल स्थानांतरण: जब रिटर्न कथन निष्पादित होता है, तो विधि तुरंत समाप्त हो जाती है, कॉल स्टैक से अपना फ्रेम हटा देती है और कॉल करने वाले को नियंत्रण लौटा देती है।
  2. प्रकार संगतता: return के बाद अभिव्यक्ति का डेटा प्रकार विधि शीर्षलेख में घोषित रिटर्न प्रकार से मेल खाना चाहिए या अंतर्निहित रूप से परिवर्तनीय होना चाहिए (उदाहरण के लिए, double को वापस करने के लिए घोषित विधि में int लौटाना वैध है क्योंकि चौड़ीकरण).
  3. पहुंच योग्य कोड त्रुटि: बिना शर्त रिटर्न के तुरंत बाद लिखा गया कोई भी कथन एक घातक संकलन-समय त्रुटि का कारण बनता है: "पहुंच योग्य कोड".
  4. एकाधिक सशर्त रिटर्न: एक विधि में सशर्त शाखाओं के भीतर कई रिटर्न कथन शामिल हो सकते हैं (if-else), लेकिन प्रत्येक संभावित निष्पादन पथ को रिटर्न मान की गारंटी देनी चाहिए, या "लापता रिटर्न स्टेटमेंट".
  5. के साथ संकलन विफल हो जाता है
  6. शून्य विधियाँ: void रिटर्न प्रकार के साथ घोषित विधियों में, एक अभिव्यक्ति के बिना एक नंगे रिटर्न; कथन कानूनी है और शीघ्र निकास के लिए उपयोग किया जाता है।

6. विधि अधिभार: संकलन-समय बहुरूपता

मेथड ओवरलोडिंग
मेथड ओवरलोडिंग के नियम:

मेथड ओवरलोडिंग एक तंत्र है जो एक वर्ग को एक ही नाम साझा करने वाली कई विधियों को घोषित करने की अनुमति देता है, बशर्ते उनकी पैरामीटर सूचियां अलग-अलग हों। यह कंपाइल-टाइम (स्टेटिक) पॉलीमोर्फिज्म का कार्यान्वयन है क्योंकि कंपाइलर तर्क सूची के आधार पर संकलन के दौरान किस विधि को लागू करना है इसका समाधान करता है।

विभिन्न विधि हस्ताक्षरों की तीन मान्य विधियाँ:
  1. पैरामीटरों की संख्या के अनुसार:
    शून्य डिस्प्ले(इंट ए) { ... }
    शून्य प्रदर्शन(int a, int b) {... } // मान्य: 1 पैरामीटर बनाम 2 पैरामीटर
  2. डेटा के अनुसार पैरामीटर के प्रकार:
    शून्य प्रिंट(इंट ए) { ... }
    शून्य प्रिंट (डबल ए) { ... } // वैध: int बनाम डबल
  3. डेटा प्रकारों के अनुक्रम (क्रम) द्वारा:
    शून्य शो(इंट ए, डबल बी) { ... }
    शून्य शो(डबल ए, इंट बी) {... } // वैध: (इंट, डबल) बनाम (डबल, इंट)
क्रिटिकल बोर्ड ट्रैप: केवल रिटर्न प्रकार को बदलना वैध विधि ओवरलोडिंग का गठन नहीं करता है!
int कंप्यूट(int x) { रिटर्न x * 2; }
डबल कंप्यूट(इंट एक्स) { रिटर्न एक्स * 2.0; } //संकलन त्रुटि: विधि पहले ही परिभाषित!
कंपाइलर यह निर्धारित नहीं कर सकता कि असाइनमेंट के बिना compute(5); के रूप में लागू होने पर किस विधि को कॉल करना है।

7. पूर्ण आईसीएसई बोर्ड कार्यक्रम: अतिभारित बहुभुज विधि

बोर्ड प्रश्न समाधान
मॉडल प्रोग्राम 1: अतिभारित बहुभुज आरेखण कक्षा
सार्वजनिक वर्ग अतिभारित बहुभुज {

    // 1. अतिभारित विधि: आकार n x n के अक्षर ch का एक वर्ग बनाता है
    सार्वजनिक शून्य बहुभुज(int n, char ch) {
        System.out.println("बहुभुज प्रकार 1: " + n + "x" + n + " का वर्ग '' + ch + "':" का उपयोग करके);
        के लिए (int i = 1; i <= n; i++) {
            for (int j = 1; j <= n; j++) {
                System.out.print(ch + " ");
            }
            System.out.println();
        }
    }

    // 2. Overloaded method: draws a rectangle of size x by y using '@'
    public void polygon(int x, int y) {
        System.out.println("Polygon Type 2: Rectangle of " + x + " rows x " + y + " columns:");
        for (int i = 1; i <= x; i++) {
            for (int j = 1; j <= y; j++) {
                System.out.print("@ ");
            }
            System.out.println();
        }
    }

    // 3. Overloaded method: draws a right-angled triangle of 3 lines using '*'
    public void polygon() {
        System.out.println("Polygon Type 3: Right-Angled Triangle of 3 rows:");
        for (int i = 1; i <= 3; i++) {
            for (int j = 1; j <= i; j++) {
                System.out.print("* ");
            }
            System.out.println();
        }
    }

    public static void main(String[] args) {
        OverloadedPolygon obj = new OverloadedPolygon();
        obj.polygon(4, '#'); // Invokes polygon(int, char)
        System.out.println();
        obj.polygon(3, 5);   // Invokes polygon(int, int)
        System.out.println();
        obj.polygon();       // Invokes polygon()
    }
}

8. संपूर्ण आईसीएसई बोर्ड कार्यक्रम: अतिभारित गणितीय श्रृंखला मूल्यांकनकर्ता

बोर्ड प्रश्न समाधान
मॉडल प्रोग्राम 2: अतिभारित गणितीय श्रृंखला जेनरेटर
सार्वजनिक वर्ग श्रृंखलागणना {

    // 1. श्रृंखला 1: एस = 1/1 + 1/2 + 1/3 + ... + 1/एन
    सार्वजनिक डबल सीरीज(डबल एन) {
        दोगुना योग = 0.0;
        के लिए (int i = 1; i <= n; i++) {
            sum += 1.0 / i;
        }
        return sum;
    }

    // 2. Series 2: S = 1/a^2 + 4/a^5 + 7/a^8 + ... to n terms
    public double series(double a, double n) {
        double sum = 0.0;
        double numerator = 1.0;
        double power = 2.0;

        for (int i = 1; i <= n; i++) {
            sum += numerator / Math.pow(a, power);
            numerator += 3.0; // Numerator increment: 1, 4, 7, 10...
            power += 3.0;     // Exponent increment: 2, 5, 8, 11...
        }
        return sum;
    }

    public static void main(String[] args) {
        SeriesComputation sc = new SeriesComputation();
        System.out.println("Series 1 Sum (n=5): " + sc.series(5.0));
        System.out.println("Series 2 Sum (a=2, n=4): " + sc.series(2.0, 4.0));
    }
}

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

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

केवल रिटर्न प्रकार को बदलकर ओवरलोड विधियों का प्रयास करना

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

रिटर्न प्रकार अकेले ओवरलोडेड तरीकों को अलग नहीं कर सकता है। आपको पैरामीटर गिनती, प्रकार, या क्रम को बदलना होगा।

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

स्वैप विधि को कॉल करने के बाद कॉलर में आदिम चर बदलने की उम्मीद

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

आदिम को मान द्वारा पारित किया जाता है (कॉपी किया गया)। विधि निष्पादन के बाद कॉलर के वेरिएबल अपरिवर्तित रहेंगे।

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

गैर-शून्य विधि की कुछ निष्पादन शाखाओं में रिटर्न स्टेटमेंट को छोड़ना

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

गैर-शून्य विधि में प्रत्येक संभावित निष्पादन पथ को एक मान वापस करना होगा, अन्यथा कंपाइलर 'लापता रिटर्न स्टेटमेंट' को चिह्नित करता है।

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

बिना शर्त रिटर्न स्टेटमेंट के बाद सीधे स्टेटमेंट लिखना

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

किसी भी स्टेटमेंट के बाद रखा गया कोई भी स्टेटमेंट बिना शर्त वापसी को कंपाइलर द्वारा 'पहुंच योग्य कोड' के रूप में चिह्नित किया गया है।

आर्किटेक्चरल ब्लूप्रिंट: उपयोगकर्ता-परिभाषित तरीके

ICSE Class 10 Java : User-Defined Methods & Method Overloading Architecture 1. Method Anatomy • Access Specifier: public, private, protected • Modifier: static (class) vs instance • Return Type: void or data type (int, double) • Signature: Method Name + Parameter List 2. Parameter Passing • Call by Value: Primitive arguments passed by copy. Original unchanged. • Call by Reference: Objects & arrays passed by reference value. Heap mutates! • Actual vs Formal: Caller arguments vs Method parameters. 3. Method Classifications • Pure Methods: Accessor / Getter. No side-effects; state unmodified. • Impure Methods: Mutator / Setter. Alters internal state or arguments. • Return Rules: Single value return matching declared type. 4. Method Overloading • Compile-time Polymorphism: Same method name, different signatures. • Signature Differentiation: 1. Number of parameters
2. Data types of parameters
3. Order/sequence of types Return type alone is INVALID! Method Signature & Invocation Binding Rules • Method Signature: Consists solely of the methodName(parameterTypes...). It excludes access specifiers and return types. • Compile-Time Binding: The compiler checks the actual argument types against formal parameter signatures at compile time. • Ambiguity Error: If argument promotion matches two overloaded methods equally (e.g. void f(int, double) vs void f(double, int) with f(5,5)), compilation fails.

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

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

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

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

1
'मेथड सिग्नेचर' से क्या तात्पर्य है? रिटर्न प्रकार इसका हिस्सा क्यों नहीं बनता?
उत्तर एवं व्याख्या देखें
उत्तर: जावा में मेथड सिग्नेचर एक अद्वितीय पहचानकर्ता है जिसका उपयोग कंपाइलर द्वारा मेथड कॉल को मेथड परिभाषाओं से जोड़ने के लिए किया जाता है; इसमें विशेष रूप से विधि का नाम और उसके पैरामीटर प्रकारों का क्रम शामिल है। रिटर्न प्रकार को बाहर रखा गया है क्योंकि एक विधि को उसके रिटर्न मान को कैप्चर किए बिना एक स्वतंत्र कथन के रूप में लागू किया जा सकता है (उदाहरण के लिए, 'Math.random();')। ऐसे आह्वानों में, यदि दो विधियां केवल रिटर्न प्रकार से भिन्न होती हैं, तो कंपाइलर के पास यह निर्धारित करने के लिए कोई वाक्यविन्यास तंत्र नहीं होगा कि कौन सी विधि का इरादा था, जिससे अस्पष्टता पैदा होती है।
2
उपयुक्त कोड चित्रण के साथ कॉल बाय वैल्यू और कॉल बाय रेफरेंस के बीच अंतर स्पष्ट करें।
उत्तर एवं व्याख्या देखें
उत्तर: कॉल बाय वैल्यू (आदिम प्रकारों के लिए प्रयुक्त) में, वास्तविक तर्क के मूल्य की एक बिटवाइज़ कॉपी औपचारिक पैरामीटर में पास की जाती है। विधि निकाय के अंदर औपचारिक पैरामीटर में किए गए परिवर्तन केवल स्थानीय स्टैक प्रतिलिपि को प्रभावित करते हैं; कॉल करने वाले का मूल वेरिएबल अपरिवर्तित रहता है (उदाहरण के लिए, किसी विधि के अंदर 'int x' को संशोधित करने से कॉलिंग 'int a' अपरिवर्तित रह जाती है)। कॉल बाय रेफरेंस (ऑब्जेक्ट्स और एरेज़ के लिए प्रयुक्त) में, 64-बिट संदर्भ पते की एक प्रति पास की जाती है। कॉलर और कैली दोनों बिल्कुल एक ही हीप मेमोरी ब्लॉक की ओर इशारा करते हैं, इसलिए ऑब्जेक्ट फ़ील्ड या सरणी तत्वों में किए गए उत्परिवर्तन विधि पूर्ण होने के बाद भी बने रहते हैं।
3
शुद्ध और अशुद्ध विधियाँ क्या हैं? प्रत्येक का एक उदाहरण दें।
उत्तर एवं व्याख्या देखें
उत्तर: A शुद्ध विधि (एक्सेसर विधि) किसी भी दुष्प्रभाव के बिना या आह्वान करने वाली वस्तु या संदर्भ तर्कों की आंतरिक स्थिति में बदलाव किए बिना अपने इनपुट से परिणाम का निरीक्षण या गणना करती है (उदाहरण के लिए, 'पब्लिक डबल गेटएरिया() { रिटर्न मैथ.पीआई * आर * आर; }')। एक अशुद्ध विधि (म्यूटेटर विधि) उदाहरण चर को संशोधित करके या संदर्भित सरणी में तत्वों को बदलकर आह्वान करने वाली वस्तु की स्थिति को बदल देती है (उदाहरण के लिए, 'सार्वजनिक शून्य सेटरेडियस (डबल आर) {यह.आर = आर; }')।
4
उन तीन शर्तों को बताएं जिनके तहत मेथड ओवरलोडिंग को जावा कंपाइलर द्वारा कानूनी रूप से मान्यता दी जाती है।
उत्तर एवं व्याख्या देखें
उत्तर: मेथड ओवरलोडिंग के लिए समान विधि नाम को साझा करने के लिए एक ही वर्ग के भीतर कई तरीकों की आवश्यकता होती है, जबकि उनके पैरामीटर हस्ताक्षरों में भिन्नता होती है: 1. पैरामीटर की एक अलग कुल संख्या (उदाहरण के लिए, 'ऐड (इंट)' बनाम 'ऐड (इंट, इंट)')। 2. विभिन्न डेटा प्रकार के पैरामीटर (जैसे, 'कैल्क(इंट)' बनाम 'कैल्क(डबल)')। 3. पैरामीटर प्रकारों का एक अलग अनुक्रमिक क्रम (जैसे, 'डिस्प्ले(इंट, स्ट्रिंग)' बनाम 'डिस्प्ले(स्ट्रिंग, इंट)')।
5
'रिटर्न' स्टेटमेंट का उद्देश्य क्या है? यदि बिना शर्त रिटर्न के बाद कोड लिखा जाता है तो क्या होता है?
उत्तर एवं व्याख्या देखें
उत्तर: 'रिटर्न' स्टेटमेंट वर्तमान विधि के निष्पादन को समाप्त कर देता है और तुरंत वैकल्पिक लौटाए गए मान के साथ प्रोग्राम नियंत्रण को कॉलिंग विधि में आह्वान के बिंदु पर वापस स्थानांतरित कर देता है। बिना शर्त रिटर्न स्टेटमेंट के तुरंत बाद स्टेटमेंट लिखने से एक घातक संकलन-समय सिंटैक्स त्रुटि होती है: 'पहुंच योग्य कोड', क्योंकि उस ब्लॉक को भौतिक रूप से निष्पादित नहीं किया जा सकता है।
6
क्या एक स्थिर विधि सीधे एक गैर-स्थैतिक विधि को लागू कर सकती है? कारण सहित समझाइये।
उत्तर एवं व्याख्या देखें
उत्तर: नहीं, एक स्थिर विधि स्पष्ट ऑब्जेक्ट संदर्भ के बिना सीधे एक गैर-स्थैतिक विधि को कॉल नहीं कर सकती है। स्थैतिक विधियाँ वर्ग से संबंधित होती हैं और किसी भी ऑब्जेक्ट को इंस्टेंट करने से पहले मेमोरी में लोड की जाती हैं। गैर-स्थैतिक उदाहरण विधियाँ किसी वस्तु के अस्तित्व पर निर्भर करती हैं और विशिष्ट उदाहरण चर पर काम करती हैं। एक स्थिर विधि से एक गैर-स्थैतिक विधि को कॉल करने के लिए, पहले 'नए' का उपयोग करके वर्ग का एक उदाहरण स्पष्ट रूप से बनाया जाना चाहिए।
7
वास्तविक पैरामीटर और औपचारिक पैरामीटर के बीच क्या अंतर है?
उत्तर एवं व्याख्या देखें
उत्तर: वास्तविक पैरामीटर (तर्क) एक विधि कॉल के दौरान कोष्ठक के अंदर दिए गए ठोस मान, चर या अभिव्यक्ति हैं (उदाहरण के लिए, 'गणना करें (x, 10)')। औपचारिक पैरामीटर विधि हेडर परिभाषा में स्पष्ट डेटा प्रकारों के साथ घोषित प्लेसहोल्डर वैरिएबल हैं (उदाहरण के लिए, 'सार्वजनिक शून्य गणना (int a, int b)') जो आह्वान पर वास्तविक पैरामीटर से कॉपी किए गए मान प्राप्त करते हैं।
8
विधि ओवरलोडिंग को 'संकलन-समय बहुरूपता' के रूप में क्यों वर्गीकृत किया गया है?
उत्तर एवं व्याख्या देखें
उत्तर: मेथड ओवरलोडिंग को कंपाइल-टाइम (या स्टेटिक) पॉलीमोर्फिज्म कहा जाता है क्योंकि किस विशिष्ट ओवरलोडेड विधि को निष्पादित करना है इसका निर्णय पूरी तरह से जावा कंपाइलर द्वारा कंपाइल समय पर विधि नाम, तर्क गणना और तर्क प्रकारों के आधार पर किया जाता है, बजाय गतिशील रूप से रनटाइम के लिए स्थगित किए जाने के।
अध्याय का अध्ययन पूर्ण हुआ?
अभ्यास के लिए तैयार?

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

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