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

Java में static

Tag.java में क्लास Tag लिखें जिसमें static मेथड static void ping() हो जो ok प्रिंट करे। Yard.java में main से Tag.ping(); बुलाएँ और इस पेज पर new Tag() न लिखें। दोनों फ़ाइलें कंपाइल करें और java Yard चलाएँ। स्क्रीन एक लाइन दिखाए: ok। मेथड क्लास नाम Tag की है, किसी एक ऑब्जेक्ट वैरिएबल की नहीं। क्लास नाम से बुलाना — यही इस पेज का पाठ है।

मेथड जो क्लास नाम पर है

इंस्टेंस-मेथड पेज पर आप new Jar(3) के बाद j.bump() लिखते थे। उस कॉल को ऑब्जेक्ट चाहिए था। static मेथड को नहीं। आप क्लास नाम से Tag.ping(); लिखते हैं। Java इस पेज पर पहले Tag ऑब्जेक्ट बनाए बिना वह मेथड चलाती है।
पहले Tag.java बनाएँ। public class लाइन public class Tag है। यहाँ पुराना Jar या Tin क्लास नाम न छोड़ें। ब्रेसेस के अंदर एक मेथड लिखें:
static void ping() { System.out.println("ok"); }
इस पहले डेमो में न फ़ील्ड है न कंस्ट्रक्टर। Tag.java में main नहीं है। कंपाइल से पहले सेव करें। शब्द static मेथड हेडर में void से पहले बैठता है। बिना static के, बाद में Yard से Tag.ping(); कॉल इस पेज की इंस्टेंस-मेथड शक्ल से मेल नहीं खाएगी।

Tag with static ping

java
public class Tag {
    static void ping() {
        System.out.println("ok");
    }
}

Yard बुलाता है Tag.ping

उसी फ़ोल्डर में Yard.java बनाएँ। इसकी public class लाइन public class Yard है। main के अंदर एक कॉल लिखें: Tag.ping();। इस पेज पर Tag t = new Tag(); न लिखें। पाठ के रास्ते के रूप में t.ping(); न लिखें। डॉट से पहले क्लास नाम काफ़ी है।
Yard को वही क्लास रखें जिसमें main है। इस पाठ के लिए main को Tag के अंदर न डालें। अगर इंस्टेंस-मेथड पेज का बचा Desk फ़ाइल अभी फ़ोल्डर में है, इस पाठ के लिए java Desk न चलाएँ — Tag.java और Yard.java कंपाइल करने के बाद java Yard चलाएँ।

Yard calls Tag.ping

java
public class Yard {
    public static void main(String[] args) {
        Tag.ping();
    }
}

जिस फ़ोल्डर में दोनों फ़ाइलें हैं वहाँ से javac Tag.java Yard.java चलाएँ। दोनों पूरा होने पर आप पहले Tag.java और फिर Yard.java कंपाइल कर सकते हैं। जब कोष्ठक, ब्रेसेस और सेमीकोलन मिलते हैं तो javac अपनी कोई लाइन नहीं लिखता। फिर java Yard चलाएँ — java Yard.java नहीं, और java Tag भी नहीं। रन कमांड से .java अंत हटाएँ। वही क्लास शुरू करें जिसमें main है। वही कमांड Windows और macOS पर चलते हैं।
प्रोग्राम एक लाइन प्रिंट कर रुकना चाहिए: ok। आपसे टाइप नहीं माँगना चाहिए। अगर टर्मिनल कीबोर्ड इनपुट का इंतज़ार करे तो किसी पुराने अभ्यास की nextLine कॉल अभी किसी फ़ाइल में है। वह कॉल हटाएँ और Yard में Tag.ping(); रखें, Tag में static void ping के साथ।
रन को एक बार चलाकर देखें। Java Yard.main से शुरू होता है। कॉल Tag.ping() क्लास Tag पर static मेथड ढूँढती है और उसकी बॉडी चलाती है। बॉडी ok प्रिंट करती है। कोई ऑब्जेक्ट नहीं बना। स्क्रीन ok दिखाती है। और कुछ नहीं छपना चाहिए। अगर आपको 4 या 5 दिखे, आप अभी भी bump पाठ का पुराना Desk प्रोग्राम चला रहे हैं।
अगर आप Yard.main के अंदर बिना आगे Tag. के ping(); लिखें, इस आकार में javac मना करता है। static मेथड को अभी भी अपने क्लास नाम की ज़रूरत है (या सावधानी भरी import शैली जो आप अभी इस्तेमाल नहीं कर रहे)। Tag.ping(); रखें। अगर आप बिना static के सिर्फ़ void रखें, तो Tag.ping(); इंस्टेंस मेथड के लिए गलत तरह की कॉल है — static वापस लगाएँ। हेडर static void ping() जैसा दिखना चाहिए, अकेले void ping() नहीं, और इस प्रिंट डेमो के लिए static int ping() भी नहीं।

Tag.ping और j.bump साथ-साथ

एक छोटी तालिका दोनों कॉल आकार साफ़ रखती है।

📊 static vs instance call

कॉल पहले ऑब्जेक्ट चाहिए?
Tag.ping(); नहीं — क्लास नाम काफ़ी है
j.bump(); हाँ — Jar j = new Jar(3); के बाद
static void ping() क्लास पर मेथड
void bump() हर ऑब्जेक्ट पर मेथड
तालिका सिर्फ़ याद दिलाने के लिए है। इस पेज पर जो टाइप की लाइन आप रखते हैं वह Yard में Tag.ping(); है, Tag में static void ping() के साथ।

इंस्टेंस मेथड से तुलना

इंस्टेंस-मेथड पेज पर j.bump() एक jar के fill को बदलता था। वह अभी भी काम करता है। यह पेज कोई फ़ील्ड नहीं बदलता। सिर्फ़ static मेथड से ok प्रिंट करता है ताकि आप क्लास-नाम कॉल देख सकें। बचा हुआ Jar j = new Jar(3); j.bump(); डेमो अलग पाठ है। इस पेज के लिए Tag और Yard तथा Tag.ping(); रखें।
दूसरे दिनों आप अभी भी ऑब्जेक्ट बना सकते हैं। यह पाठ जान-बूझकर static रास्ता चुनता है। इस पेज पर एक ही Yard डेमो में j.bump() और Tag.ping() को मिलाएँ नहीं। एक साफ़ रास्ता काफ़ी है: मेथड पर static, कॉल से पहले क्लास नाम, प्रिंट ok। जब बाद में एक प्रोग्राम में दोनों शैलियाँ चाहिए हों, हर कॉल ईमानदार रखें — इंस्टेंस मेथड से पहले ऑब्जेक्ट, static मेथड से पहले क्लास नाम — ताकि पाठक देखे आपने कौन-सा प्रकार चाहा।

इस कॉल के लिए new Tag की ज़रूरत नहीं

क्योंकि ping static है, Yard कॉल से पहले Tag ऑब्जेक्ट नहीं बनाता। Tag t = new Tag(); लिखकर फिर t.ping(); कई सेटअप में static मेथड के लिए कंपाइल हो सकता है, पर वह इस पेज की सिखाई शक्ल नहीं है। सिर्फ़ Tag.ping(); पर रहें। अगर स्क्रीन 4 या 5 दिखाए, पुराना Desk bump डेमो अभी चल रहा है — java Yard पर जाएँ।
अगर javac कहे कि Tag पर सिंबल ping नहीं मिला, जाँचें कि मेथड हेडर में static है और दोनों फ़ाइलें एक ही फ़ोल्डर में हैं। अगर java Tag चले और कुछ उपयोगी न करे, आपने गलत क्लास शुरू की — Yard शुरू करें जिसमें main है।

access के लिए क्या बचता है

यह पेज एक public क्लास और उसी फ़ोल्डर में पैकेज-दिखाई static मेथड इस्तेमाल करता है। बाद का पेज — access — सदस्यों पर public और private जैसे शब्द दिखाता है। यहाँ static कॉल पर रहें। इस पेज पर private static न बनाएँ जब तक आप पहले से न जानते हों; पाठ का लक्ष्य Tag.ping(); है static void ping() के साथ।
जब फ़ोल्डर में अभी Jar.java या Desk.java हों, उन्हें छोड़ दें या तभी हटाएँ जब वे आपकी कंपाइल कमांड उलझाएँ। इस पाठ की Tag और Yard जोड़ी कंपाइल करने के बाद java Yard चलाएँ।

access से पहले

आप Tag में static void ping() { System.out.println("ok"); } लिख सकते हैं और Yard से बिना ऑब्जेक्ट Tag.ping(); बुला सकते हैं। दोनों फ़ाइलें कंपाइल करें और java Yard चलाएँ। स्क्रीन ok दिखाती है। static मेथड क्लास नाम पर चली। अगला पेज access है, जहाँ आप नियंत्रित करते हैं कि अन्य क्लासें कौन-से नाम देख सकें।
मेथड पर static रखें। कॉल से पहले क्लास नाम रखें। main को Yard में रखें। ये तीन आदतें आगे बढ़ने से पहले इस पेज का चेकपॉइंट हैं।

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

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

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

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

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

📝 निर्देश

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