2010-07-24 27 views
8

हम वास्तव में पैकेज कीवर्ड का उपयोग कब करते हैं? इसका क्या मतलब है?जावा में पैकेज

package masnun;  
public class masnun{ 
    public static void main(String args[]) { 
      System.out.println("Hello maSnun!"); 
     } 


} 

इस पैकेज बात क्या करता है:

मान लीजिए मैं निम्नलिखित कोड लिखने? मुझे एक masnun.class फ़ाइल मिलती है जो नहीं चलती है। मैं जावा के लिए नया हूँ। क्या कोई समझा सकता है?

धन्यवाद

+1

इस प्रश्न का उत्तर मदद कर सकता है: http://stackoverflow.com/questions/1088509/what-is-the-purpose-of-defining-a-package-in-java-file – BoltClock

उत्तर

13

चूंकि मैं इन अन्य उत्तरों का प्रशंसक नहीं हूं, मैं अपना खुद का लिखूंगा।


असली दुनिया उदाहरण:

एक जावा वर्ग एक और संदर्भ के लिए के लिए एक आसान तरीका के रूप में एक "पैकेज" का Think।

मान लें कि मेरे पास मेरे अटारी में यह बड़ा बॉक्स है। मेरे पास एक कैलकुलेटर, कंपास, प्रोटैक्टर आदि है। मैं इस बॉक्स को MathTools लेबल कर सकता हूं।

एक और उदाहरण आपके सभी चित्रों को ले जाएगा और उन्हें आपके दस्तावेज़ों में Pictures फ़ोल्डर में डाल देगा। वहां से, आप उन्हें Spring Break 2009 या [Insert Name Here]'s Party में विभाजित कर सकते हैं।

यह जावा से कैसे संबंधित है? खैर, चलिए java.util पैकेज देखें (आप इसे import java.util.*; के साथ संदर्भित कर सकते हैं। आपके पास ऐरेलिस्ट, स्ट्रिंग्स, रैंडम इत्यादि हैं जिनका उपयोग अधिकांश जावा प्रोग्राम (सामान्य "उपयोगिताओं" में किया जाता है, यदि आप पसंद करते हैं)। सभी अच्छी तरह व्यवस्थित हैं एक ही पैकेज, इसलिए प्रोग्रामर आसानी से उन्हें संदर्भ कि कर सकते हैं (import java.util.*;)


आसान आवेदन:।

की है कि हम C:/Program Files/Java Project/my/proj/ में एक छोटे से पासा सिम्युलेटर करने के लिए सभी फ़ाइलों को मिल सकता है मान लेते हैं (यह संभव है कि यह फ़ाइल आपके कंप्यूटर पर मौजूद नहीं है, लेकिन बस एक पल का नाटक करें)

आपके पास 3 फाइलें हैं: Main.java, Dice.java, और DiceRoller.java। जिनमें से सभी नीचे दिखाए गए हैं:

"C:/ProgramFiles/जावा परियोजना/मेरी/proj/मुख्य/Main.java":

package my.proj.main; 

import my.proj.sims.Dice; 

public class Main 
{ 
    public static void main(String[] args) 
    { 
     DiceRoller roller = new DiceRoller(); 
     roller.rollAndShow(4); 
    } 
} 

"C:/ProgramFiles/जावा परियोजना/मेरी/proj/सिम्स/Dice.java":

package my.proj.sims; 

import java.util.Random; // I used the Random class, but you can also use the Math class if you prefer (java.lang.Math) 

public class Dice 
{ 
    public Dice() 
    { 
    } 

    public int roll() 
    { 
     Random rand = new Random();  
     return rand.nextInt(6) + 1; // Rolls a random number 1-6 
    } 
} 

"C:/ProgramFiles/जावा परियोजना/मेरी/proj/सिम्स/DiceRoller.java":

package my.proj.sims; 

public class DiceRoller 
{ 
    public DiceRoller() 
    { 
    } 

    // Rolls and prints the result of 'n' number of rolls 
    public void rollAndShow(int n) 
    { 
     Dice dice = new Dice(); 

     for (int i = 0; i < n; i++) 
     { 
      System.out.println(dice.roll()); // You should never use S.o.p in a method - it's bad practice, but it's easier this way if you don't yet understand the concept of objects 
     } 
    } 
} 

हालात को नोटिस:

  • Main.javamy.proj.main
  • Dice.java में पैक किया जाता है, ताकि एक Dice वस्तु बनाने और उसके तरीकों का उपयोग, क्योंकि यह एक में है करने के लिए my.proj.sims.Dice आयात करने के लिए my.proj.sims
  • Main.java जरूरतों में पैक किया जाता है Dice.java से अलग पैकेज।
  • DiceRoller.java को my.proj.sims.Dice आयात करने की आवश्यकता नहीं है क्योंकि यह Dice.java के समान पैकेज में है और संकलक स्वचालित रूप से दोनों को जोड़ देगा।

Import एक कक्षा की कार्यक्षमता को वर्तमान फ़ाइल में लोड करने का आदेश है। उदाहरण के लिए Dice.java देखें। Random ऑब्जेक्ट बनाने के लिए, जिसमें nextInt() विधि है, इसे java.util.* पैकेज से रैंडम क्लास आयात करने की आवश्यकता है।

आप देख सकते हैं कि कुछ लोगों को java.util.* बजाय java.util.Random, java.util.ArrayList, आदि क्या * अनिवार्य रूप से मतलब java.util के भीतर किसी भी वर्ग है उपयोग करने के लिए पसंद करेंगे। चल रहा है import java.util.* रैंडम, स्ट्रिंग, ऐरेलिस्ट, आदि कक्षाओं को आयात करेगा।

आशा है कि यह चीजों को साफ़ करे। अगर इससे आपकी मदद मिली है तो कृपया ऊपर उठने पर विचार करें :)

+0

हे, महान एक! आपका खाना हो गया क्या? मैं इंतज़ार कर रहा हूँ! :) समय और प्रयासों के लिए धन्यवाद। – masnun

+0

प्रयासों और समय के लिए धन्यवाद। मैं इसे कैसे संकलित करूं? – masnun

+0

@maSnun: अरे। क्षमा करें, मैं कल समय से बाहर भाग गया। क्या आप एक आईडीई (ग्रहण, जेसीएटर, नेटबीन इत्यादि) का उपयोग कर रहे हैं? क्या आपने नवीनतम जेडीके (जावा डेवलपमेंट किट - http://java.sun.com/javase/downloads/widget/jdk6.jsp) स्थापित किया है? –

1

"पैकेज जिस तरह से हम उनकी कार्यक्षमता के अनुसार विभिन्न निर्देशिका में फ़ाइलों को व्यवस्थित, प्रयोज्य के रूप में अच्छी श्रेणी के रूप में वे से संबंधित होना चाहिए से ज्यादा कुछ नहीं कर रहे हैं।" से: http://www.jarticles.com/package/package_eng.html

असल में, आपके उदाहरण में, आप कह रहे हैं कि कक्षा मसनुन पैकेज मसनुन का पैकेज है। इसलिए अनिवार्य रूप से अन्य वर्गों में आप इस वर्ग को मासुन आयात करके संदर्भित कर सकते हैं; जो मसुन पैकेज में रहता है जो क्लास मसनुन आयात करता है।

+0

क्या मुझे व्यवस्था करने की आवश्यकता है एक विशिष्ट समूह में वर्ग फ़ाइल? शायद masnun.class को मसनुन नाम की निर्देशिका में डालने की तरह? मुझे अभी भी यह नहीं मिला है। जब मैं उस कमांड का उपयोग करता हूं - आयात मसनुन; , वास्तव में क्या होता है? जेवीएम पैकेज के लिए कहां देखता है? या यह कक्षा की तलाश में है? मेरा मतलब है कि मुझे "जावा मसनुन" कमांड का उपयोग करके उस फ़ाइल को चलाने के लिए क्या चलने देगा? – masnun

+0

@maSnum: हाँ, मानक जावा क्लासलोडर निर्देशिका पदानुक्रम में कक्षाओं की तलाश करता है जो पैकेज पदानुक्रम से मेल खाता है। असल में, आयात masnum.MyClass किसी भी क्लासपाथ जड़ें (जिसमें आमतौर पर वर्तमान निर्देशिका शामिल है) में डायरेक्टॉय मासनम में एक फ़ाइल MyClass.class की तलाश होती है। –

+0

मैं इस प्रश्न का उत्तर देने का प्रयास करने जा रहा था, लेकिन: ये जावा के बहुत ही मूलभूत सिद्धांत हैं, इसलिए हमें प्रश्न-उत्तर-उत्तर के रूप में एक संपूर्ण जावा ट्यूटोरियल करने का कोई मतलब नहीं है। आप एक बेहतर [जावा ट्यूटोरियल] (http://www.programmingtutorials.com/java.aspx) या दो पढ़ने के लिए बेहतर काम करेंगे (और काम कर रहे हैं)। –

3

यह एक सॉफ्टवेयर लॉगर, डाटाबेस, कनेक्शन, टेबल आदि संकुल, इन कक्षाओं के दायरे अलग नामित वर्गों के लिए के लिए इतना है कि आप डुप्लिकेट classnames के साथ मुद्दों की जरूरत नहीं है बहुत संभावना है।

कुछ उदाहरण:।

  • जावा *
  • org.apache **
  • com.yourcompany.yourproject।।

यदि आप एक विनाश पैकेज से कक्षाओं का उपयोग नहीं करना चाहते हैं तो आपको उन्हें आयात करने की आवश्यकता है।

import java.util.Date 

या

import java.sql.Date 
2

यह आपके स्रोत फ़ाइलों को व्यवस्थित करने में इस तरह के एक तरीका है। एक पैकेज में एकाधिक वर्ग फ़ाइल होती है, एक वर्ग फ़ाइल में केवल एक सार्वजनिक वर्ग होता है, एक वर्ग में कई विधियों और चर होते हैं।

2

जावा में पैकेज विवरण कई संबंधित वर्गों को समूहित करने के लिए उपयोग किया जाता है। आप वर्गों है कि डाटाबेस बातचीत के साथ विशेष रूप से सौदा है, तो यह उन सब को

com.example.myapp.persistence 

यह भी नाम रिक्ति की बेनिफिस प्रदान करता है के तहत डाल करने के लिए तार्किक होगा, एक जावा वर्ग पहचान के क्रम भाग में कि याद इसकी पूरी तरह से योग्य है नाम, कि,

com.example.myapp.persistence.UserDAO 

में की तरह अपने पैकेज का नाम से पहले जब आप आवेदन कक्षाओं की एक जोड़ी से अधिक समायोजित करने के लिए बढ़ता रहे वर्ग के नाम है, यह दोनों व्यावहारिक और उन्हें संकुल में व्यवस्थित करने के लिए एक अच्छा अभ्यास है

0

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

संबंधित मुद्दे