लोड हो रहा है...

Java में ऑब्जेक्ट

Chip.java में Chip नाम की क्लास लिखें जिसमें मेथड beep ok प्रिंट करे। इस पेज पर मेथड static नहीं है। दूसरी फ़ाइल Bench.java में Chip c = new Chip(); से एक chip बनाएँ, फिर c.beep(); कॉल करें। दोनों फ़ाइलें कंपाइल करें और java Bench चलाएँ। स्क्रीन एक लाइन दिखाए: ok। शब्द new क्लास से एक ऑब्जेक्ट बनाता है। चर c वह ऑब्जेक्ट रखता है। आप beep को c पर कॉल करते हैं, नंगे क्लास नाम पर नहीं। यही बना ऑब्जेक्ट — और उसे इस्तेमाल करने वाली कॉल — इस पेज का पाठ है।

क्लास से एक ऑब्जेक्ट

क्लास अभी भी नाम वाला टाइप है। ऑब्जेक्ट उस टाइप से बना एक मान है। लाइन new Chip() Java से वह मान बनाने को कहती है। आप उसे टाइप Chip वाले चर में रखते हैं, फिर हर ऑब्जेक्ट से जुड़े मेथड तक उसी चर से पहुँचते हैं।
पहले Chip.java बनाएँ। public class लाइन public class Chip है। इस फ़ाइल में पुराना Badge या Desk क्लास नाम न छोड़ें। ब्रेसेस के अंदर void beep() लिखें — इस हेडर में static शब्द न हो। बॉडी एक प्रिंट है: System.out.println("ok");। void रखें। मेथड संख्या नहीं लौटाता। इस पेज पर Chip.java में main नहीं है। कंपाइल से पहले फ़ाइल सेव करें।

Chip with beep

java
public class Chip {
    void beep() {
        System.out.println("ok");
    }
}

Bench chip बनाता है, फिर beep कॉल करता है

उसी फ़ोल्डर में Bench.java बनाएँ। public class लाइन public class Bench है। main के अंदर दो लाइन लिखें: पहले Chip c = new Chip();, फिर c.beep();। पहली टाइप Chip का चर c घोषित करती है और नए ऑब्जेक्ट से भरती है। दूसरी उस ऑब्जेक्ट पर beep कॉल करती है। बिंदु चर नाम के बाद आता है, अकेले क्लास नाम के बाद नहीं।

Bench builds one chip

java
public class Bench {
    public static void main(String[] args) {
        Chip c = new Chip();
        c.beep();
    }
}

जिस फ़ोल्डर में दोनों फ़ाइलें हैं वहाँ से javac Chip.java Bench.java चलाएँ। दोनों पूरी हों तो पहले Chip.java फिर Bench.java भी कंपाइल कर सकते हैं। जब कोष्ठक, ब्रेसेस और सेमीकोलन मेल खाते हैं तो javac अपनी कोई लाइन नहीं लिखता। फिर java Bench चलाएँ — java Bench.java नहीं, और java Chip भी नहीं। रन कमांड से .java अंत हटाएँ। वह क्लास शुरू करें जिसमें main है। ये कमांड Windows और macOS पर काम करती हैं।
प्रोग्राम एक लाइन प्रिंट करके रुके: ok। आपको टाइप करने के लिए नहीं पूछना चाहिए। अगर टर्मिनल कीबोर्ड का इंतज़ार करे तो पुराने अभ्यास की nextLine कॉल अभी किसी फ़ाइल में है। उसे हटाएँ और Bench में Chip c = new Chip(); व c.beep(); रखें, Chip में beep के साथ।
रन को एक बार देखें। Java Bench.main से शुरू होती है। व्यंजक new Chip() एक ऑब्जेक्ट बनाता है। वह ऑब्जेक्ट c में संग्रहित होता है। कॉल c.beep() उस ऑब्जेक्ट के लिए beep में जाती है। मेथड ok प्रिंट करता है और लौटता है। फिर Bench खत्म होता है। स्क्रीन लाइन ऑब्जेक्ट के मेथड से आई, जब new ने ऑब्जेक्ट बनाया।
क्लास को डिस्क पर ब्लूप्रिंट और ऑब्जेक्ट को इस रन के लिए मेमोरी में बनी एक इकाई समझें। ब्लूप्रिंट एक बार कंपाइल करते हैं। हर new Chip() दूसरी इकाई बनाता है। चर उस इकाई का नाम रखता है ताकि बाद की लाइनें पहुँच सकें। उस नाम के बिना इस पेज पर beep के लिए हैंडल नहीं बचता।

कॉल में अकेला Chip नहीं, c क्यों

क्लास पेज पर static मेथड टाइप नाम से Badge.show() कॉल हो सकता था। यहाँ beep में static शब्द नहीं। Java पहले ऑब्जेक्ट चाहती है। बिना ऑब्जेक्ट Chip.beep(); इस शुरुआती आकार से मेल नहीं खाता। new से बनाएँ, नतीजा चर में रखें, फिर उसी चर से कॉल करें।
अगर केवल new Chip(); लिखें और कभी न रखें, तो भी ऑब्जेक्ट बना है लेकिन beep कॉल करने का नाम नहीं। इस पेज पर चर रखें: Chip c = new Chip(); फिर c.beep();। चर new खत्म होने के बाद ऑब्जेक्ट तक का रास्ता है।
बचा static डेमो फ़ोल्डर भ्रमित कर सकता है। जो फ़ाइल अभी भी Badge.show(); कॉल करे वह पिछले पाठ का आकार है। इस पेज के लिए Chip और Bench व new लाइन रखें। यहाँ Badge की ज़रूरत नहीं।

दो ऑब्जेक्ट, दो beep

एक ही क्लास से एक से अधिक ऑब्जेक्ट बना सकते हैं। हर new Chip() अलग ऑब्जेक्ट बनाता है। हर ऑब्जेक्ट अपना beep चला सकता है। क्लास टेक्स्ट साझा है; ऑब्जेक्ट एक ही मान नहीं।

Bench builds two chips

java
public class Bench {
    public static void main(String[] args) {
        Chip a = new Chip();
        Chip b = new Chip();
        a.beep();
        b.beep();
    }
}

फिर कंपाइल और चलाएँ: javac Chip.java Bench.java, फिर java Bench। स्क्रीन दो लाइन दिखाए: ok, फिर ok। पहली a से आई। दूसरी b से। दोनों ने Chip में वही beep मेथड टेक्स्ट इस्तेमाल किया, लेकिन हर कॉल new से बने अलग ऑब्जेक्ट पर चली।
अगर स्क्रीन केवल एक ok दिखाए तो जाँचें कि दोनों कॉल मौजूद हैं और दोनों चर new से बने। Chip b = a; लिखना दूसरा ऑब्जेक्ट नहीं बनाता; b को a वाले ही ऑब्जेक्ट से जोड़ता है। वह विचार बाद के पेजों के लिए। इस पेज पर दो ऑब्जेक्ट चाहें तो दो new Chip() व्यंजक लिखें।

यह पेज fields के लिए क्या छोड़ता है

यह पेज अभी chip के अंदर संख्या या शब्द नहीं रखता। फ़ील्ड — हर ऑब्जेक्ट पर डेटा रखने वाले नाम — अगला पेज है। यहाँ ऑब्जेक्ट new के बाद मौजूद है, और इंस्टेंस मेथड beep केवल प्रिंट करता है। टाइप के रूप में क्लास और बने मान के रूप में ऑब्जेक्ट का विभाजन देखने के लिए काफी है।
चर का नाम c से unit कर सकते हैं: Chip unit = new Chip(); फिर unit.beep();। जब मेथड बॉडी अभी भी वही शब्द प्रिंट करे तो स्क्रीन ok रहती है। चर नाम आपका है; टाइप नाम Chip और व्यंजक new Chip() अभी भी मेल खाने चाहिए।
अगर javac Bench.java कंपाइल करते हुए कहे कि प्रतीक Chip नहीं मिला, जाँचें कि Chip.java उसी फ़ोल्डर में है और क्लास लाइन सचमुच public class Chip कहती है। अगर रन कुछ न प्रिंट करे तो पुष्टि करें कि main new लाइन के बाद अभी भी c.beep(); कॉल करता है और beep में अभी भी println है।

fields से पहले

आप void beep() के साथ Chip लिख सकते हैं, Chip c = new Chip(); से ऑब्जेक्ट बना सकते हैं, और Bench से c.beep(); कॉल कर सकते हैं। दोनों फ़ाइलें कंपाइल करें और java Bench चलाएँ। स्क्रीन ok दिखाती है। दूसरा new Chip() एक और ऑब्जेक्ट बनाता है जो खुद beep कर सकता है। अगला पेज fields है; वहाँ हर ऑब्जेक्ट अपना संग्रहित डेटा रखना शुरू करता है।

🧠 अपने ज्ञान की परीक्षा करें

शुरू करने के लिए तैयार

अपने ज्ञान की परीक्षा करें

इस इंटरैक्टिव क्विज़ के साथ अपनी चुनौती लें और देखें कि आप विषय को कितनी अच्छी तरह समझते हैं

❓
5
प्रश्न
🎯
70%
पास करने के लिए
♾️
∞
समय
🔄
∞
प्रयास

📝 निर्देश

  • हर प्रश्न को ध्यान से पढ़ें
  • हर प्रश्न के लिए सबसे अच्छा उत्तर चुनें
  • आप जितनी बार चाहें क्विज़ दोबारा दे सकते हैं
  • आपकी प्रगति शीर्ष पर दिखाई जाएगी