Java में पैकेज
क्लास Bell को kit नाम के फ़ोल्डर में रखें, पहली लाइन package kit; के साथ, और static मेथड ring() जो ding प्रिंट करे। Lobby.java में उस फ़ोल्डर के पास — kit के अंदर नहीं — main से बुलाएँ kit.Bell.ring();। पैरेंट फ़ोल्डर से कंपाइल करें और java Lobby चलाएँ। स्क्रीन एक लाइन दिखाए: ding। पैकेज नाम और फ़ोल्डर नाम मिलते हैं। आगे kit.Bell लगाकर बुलाना — यही इस पेज का पाठ है। शब्द import अगले पेज के लिए छोड़ दें।
वह फ़ोल्डर नाम जो फ़ाइल घोषित करती है
अब तक हर क्लास एक सपाट फ़ोल्डर में बैठती थी। पैकेज क्लासों को एक फ़ोल्डर नाम के नीचे समूह करता है। फ़ाइल की पहली लाइन वही नाम कहे: package kit;। फ़ाइल Bell.java kit नाम के फ़ोल्डर के अंदर होनी चाहिए। अगर फ़ोल्डर और package लाइन नहीं मिलते, javac शिकायत करता है।
पहले फ़ोल्डर kit बनाएँ। उसके अंदर Bell.java बनाएँ। पहली लाइन package kit; है। फिर public class लाइन public class Bell है। यहाँ पुराना Gate या Tag क्लास नाम न छोड़ें। एक static मेथड लिखें:
public static void ring() { System.out.println("ding"); }
मेथड पर public लगाएँ ताकि पैकेज के बाहर की क्लास उसे बुला सके। Bell.java में main नहीं है। कंपाइल से पहले सेव करें।
package kit;
public class Bell {
public static void ring() {
System.out.println("ding");
}
}
Lobby बुलाता है kit.Bell.ring
पैरेंट फ़ोल्डर में Lobby.java बनाएँ — kit फ़ोल्डर के समान स्तर पर, kit के अंदर नहीं। इसकी public class लाइन public class Lobby है। main के अंदर लिखें kit.Bell.ring();। इस पेज पर import kit.Bell; न लिखें। कॉल के लिए पूरा नाम kit.Bell काफी है।
Lobby को वही क्लास रखें जिसमें main है। इस पाठ के लिए main को Bell के अंदर न डालें। अगर access पेज का बचा Pier फ़ाइल अभी पास है, इस पाठ के लिए java Pier न चलाएँ — पैरेंट फ़ोल्डर से कंपाइल करने के बाद java Lobby चलाएँ।
public class Lobby {
public static void main(String[] args) {
kit.Bell.ring();
}
}
उस पैरेंट फ़ोल्डर से जहाँ Lobby.java और kit फ़ोल्डर दोनों हैं, javac kit/Bell.java Lobby.java चलाएँ। Windows पर उसी विचार से स्लैश kit\Bell.java भी हो सकता है — javac को पैकेज फ़ोल्डर के अंदर की फ़ाइल पर लगाएँ, फिर Lobby.java पर। जब कोष्ठक, ब्रेसेस और सेमीकोलन मिलते हैं तो javac अपनी कोई लाइन नहीं लिखता। फिर java Lobby चलाएँ — java Lobby.java नहीं, और java kit.Bell भी नहीं। रन कमांड से .java अंत हटाएँ। वही क्लास शुरू करें जिसमें main है। पथ आपके शेल से मिलने पर वही कमांड Windows और macOS पर चलते हैं।
प्रोग्राम एक लाइन प्रिंट कर रुकना चाहिए: ding। आपसे टाइप नहीं माँगना चाहिए। अगर टर्मिनल कीबोर्ड इनपुट का इंतज़ार करे तो किसी पुराने अभ्यास की nextLine कॉल अभी किसी फ़ाइल में है। वह कॉल हटाएँ और Lobby में kit.Bell.ring(); रखें, Bell में package kit; के साथ।
रन को एक बार चलाकर देखें। Java Lobby.main से शुरू होता है। कॉल kit.Bell.ring() पैकेज kit में क्लास Bell ढूँढती है और static मेथड चलाती है। बॉडी ding प्रिंट करती है। स्क्रीन ding दिखाती है। और कुछ नहीं छपना चाहिए। अगर आप 9 या ok देखें, आप अभी भी पिछले पेज का पुराना Pier या Yard प्रोग्राम चला रहे हैं।
अगर Bell.java Lobby.java के पास बिना kit फ़ोल्डर के हो जबकि फ़ाइल अभी भी package kit; कहती है, javac मना करता है। फ़ाइल को kit में ले जाएँ। अगर पैकेज के बाहर से बिना kit. के Bell.ring(); बुलाएँ, इस पेज पर javac छोटा नाम नहीं देखता — kit.Bell.ring(); रखें। अगला पेज import सिखाए तब तक पैकेज नाम टाइप के पूरे नाम का हिस्सा है।
फ़ोल्डर और package लाइन साथ-साथ
एक छोटी टेबल मिलान साफ़ रखती है।
📊 folder vs package line
| टुकड़ा | इस पेज पर |
|---|---|
| फ़ोल्डर नाम | kit |
| Bell.java में पहली लाइन | package kit; |
| Lobby से कॉल | kit.Bell.ring(); |
| import | इस पेज पर नहीं — अगला पाठ |
टेबल सिर्फ़ याद दिलाने के लिए है। जो टुकड़े आप रखते हैं वे Bell फ़ाइल में package kit;, kit के नीचे फ़ाइल पथ, और Lobby में kit.Bell.ring(); हैं। |
access और सपाट फ़ोल्डर से तुलना
access पेज पर Gate और Pier एक फ़ोल्डर साझा करते थे private फ़ील्ड के साथ। वह अभी भी काम करता है। यह पेज पैकेज फ़ोल्डर और package लाइन जोड़ता है। बचा हुआ Gate g = new Gate(9); g.show(); डेमो अलग पाठ है। इस पेज के लिए kit/Bell.java और Lobby.java तथा kit.Bell.ring(); रखें।
छोटे डेमो के लिए आप अभी भी सपाट फ़ोल्डर इस्तेमाल कर सकते हैं। यह पाठ पैकेज चुनता है ताकि आप क्लास के आगे नाम देख सकें। इस पेज पर एक ही Lobby डेमो में g.show() और kit.Bell.ring() मिलाएँ नहीं। एक साफ़ रास्ता काफी है: package लाइन, मिलता फ़ोल्डर, Lobby से पूरी कॉल।
पैरेंट से कंपाइल करें, सिर्फ़ kit के अंदर से नहीं
जब आप कंपाइल करते हैं और जब java Lobby चलाते हैं, पैरेंट फ़ोल्डर में रहें। अगर आप cd से kit में जाएँ और classpath ठीक किए बिना वहाँ से Lobby चलाने की कोशिश करें, पाठ का छोटा रास्ता टूट जाता है। इस पेज के लिए पैरेंट को वर्किंग फ़ोल्डर रखें। अच्छी कंपाइल के बाद Bell की .class फ़ाइल kit के नीचे Bell.java के पास दिखनी चाहिए।
अगर स्क्रीन 9 या ok दिखाए, पुराना Pier या Yard प्रोग्राम अभी चल रहा है। java Lobby पर जाएँ। अगर javac को kit.Bell न मिले, फ़ोल्डर नाम की वर्तनी और package kit; लाइन अक्षर-अक्षर जाँचें।
import के लिए क्या बचता है
यह पेज हर कॉल पर पूरा नाम kit.Bell टाइप करता है। बाद का पेज — import — दिखाता है कि import kit.Bell; कैसे Lobby में छोटा नाम Bell लिखने देता है। यहाँ पूरे नाम पर रहें। इस पेज पर import न बनाएँ जब तक आप पहले से न जानते हों; पाठ का लक्ष्य पैकेज फ़ोल्डर और kit.Bell.ring(); है।
जब पुरानी Gate.java या Pier.java फ़ाइलें अभी पैरेंट फ़ोल्डर में हों, उन्हें छोड़ दें या तभी हटाएँ जब वे आपकी कंपाइल कमांड उलझाएँ। इस पाठ की पैकेज जोड़ी कंपाइल करने के बाद java Lobby चलाएँ।
import से पहले
आप Bell.java को फ़ोल्डर kit के नीचे package kit; और public static void ring() के साथ रख सकते हैं जो ding प्रिंट करे, और Lobby से बिना import kit.Bell.ring(); बुला सकते हैं। पैरेंट फ़ोल्डर से कंपाइल करें और java Lobby चलाएँ। स्क्रीन ding दिखाती है। पैकेज नाम फ़ोल्डर से मिला। अगला पेज import है, जहाँ import लाइन के बाद छोटा नाम काफी हो जाता है।
Bell में package kit; पहली लाइन रखें। फ़ाइल को kit के अंदर रखें। कॉल को kit.Bell.ring(); रखें। ये तीन आदतें आगे बढ़ने से पहले इस पेज का चेकपॉइंट हैं। जब पैरेंट फ़ोल्डर से स्क्रीन ding दिखाए, पैकेज लेआउट इस पाठ का काम कर रहा है।
🧠 अपने ज्ञान की परीक्षा करें
अपने ज्ञान की परीक्षा करें
इस इंटरैक्टिव क्विज़ के साथ अपनी चुनौती लें और देखें कि आप विषय को कितनी अच्छी तरह समझते हैं
📝 निर्देश
- हर प्रश्न को ध्यान से पढ़ें
- हर प्रश्न के लिए सबसे अच्छा उत्तर चुनें
- आप जितनी बार चाहें क्विज़ दोबारा दे सकते हैं
- आपकी प्रगति शीर्ष पर दिखाई जाएगी