2010-07-24 2 views
8

Когда мы действительно используем ключевое слово пакета? Что это значит?Пакет в Java

Предположим, что я пишу следующий код:

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


} 

Что это пакет вещь сделать? Я получаю файл masnun.class, который не запускается. Я новичок в Java. Может кто-нибудь объяснить?

Благодаря

+1

Ответы на этот вопрос могут помочь: http://stackoverflow.com/questions/1088509/what-is-the-purpose-of-defining-a-package-in-java-file – BoltClock

ответ

13

Поскольку я не являюсь поклонником этих других ответов, я напишу свой собственный.


реальных примеров:

Придумайте «пакет», как легкий способ для класса Java, чтобы ссылаться на другой.

Предположим, у меня есть эта большая коробка на чердаке. У меня есть калькулятор, компас, транспортир и т. Д. Я могу пометить эту коробку MathTools.

Другой пример - взять все ваши фотографии и поместить их в папку Pictures в ваших документах. Оттуда вы можете разбить их на Spring Break 2009 или [Insert Name Here]'s Party.

Как это относится к Java? Итак, давайте посмотрим на пакет java.util (вы можете ссылаться на это с помощью import java.util.*;. У вас есть ArrayLists, Strings, Random и т. Д., Которые используются в большинстве программ Java (если вы предпочитаете) общие утилиты. тот же пакет, так что программисты могут легко ссылаться на них (import java.util.*;)


Easy Применение:.

Давайте предположим, что мы можем найти все файлы в небольшой кости симулятор в C:/Program Files/Java Project/my/proj/ (это, вероятно, что этот файл не существует на вашем компьютере, но просто притворяйтесь на мгновение).

У вас есть 3 файла: Main.java, Dice.java и DiceRoller.java. Все из них показаны ниже:

.

"C:/ProgramFiles/Java Project/мой/проектируемый/главная/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/Java Project/мой/проектируемый/симы/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/Java Project/мои/Рго/симы/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.java упаковывается в my.proj.main
  • Dice.java упаковывается в my.proj.sims
  • Main.java потребности импортировать my.proj.sims.Dice для того, чтобы создать Dice объект и использовать его методы, потому что это в другой упаковка от Dice.java.
  • DiceRoller.java не нужно импортировать my.proj.sims.Dice, потому что он находится в том же пакете, что и Dice.java, и компилятор автоматически свяжет эти два.

.

Import - это команда для загрузки функциональности класса в текущий файл. Посмотрите на Dice.java, например. Чтобы создать объект Random, который имеет способ nextInt(), ему необходимо импортировать класс Random из пакета java.util.*.

.

Вы можете заметить, что некоторые люди предпочитают использовать java.util.* вместо java.util.Random, java.util.ArrayList и т.д. Что * существу означает любой класс в java.util. Запуск import java.util.* будет импортировать классы Random, String, ArrayList и т. Д.

.

Надеюсь, что это прояснит ситуацию. Пожалуйста, подумайте о том, чтобы продолжить, если это вам помогло.

+0

Эй, отличный! Вы закончили есть? Я жду! :) Спасибо за время и усилия. – masnun

+0

Спасибо за усилия и время. Как его скомпилировать? – masnun

+0

@maSnun: Привет. Извините, вчера у меня не хватило времени. Вы используете IDE (Eclipse, JCreator, NetBeans и т. Д.)? Установили ли вы последний JDK (комплект разработки java - http://java.sun.com/javase/downloads/widget/jdk6.jsp)? –

1

«Пакеты не более чем способ, мы организуем файлы в разные каталоги в зависимости от их функциональности, практичности, а также категории, они должны принадлежать.» от: http://www.jarticles.com/package/package_eng.html

В принципе, в вашем примере вы говорите, что класс masnun - это пакет пакета masnun. Таким образом, по существу в других классах вы можете ссылаться на этот класс путем импорта masnun; Что импортирует класс masnun, который находится в пакете masnun.

+0

Нужно ли устраивать файл класса в определенной группе? Может быть, как положить masnun.class в каталог с именем masnun? Я до сих пор не понимаю. Когда я использую эту команду - import masnun; , что на самом деле происходит? Где JVM ищет пакет? Или он ищет класс? Я имею в виду, что позволит мне запустить этот файл с помощью команды «java masnun»? – masnun

+0

@maSnum: да, стандартный Java classloader ищет классы в иерархии каталогов, которые соответствуют иерархии пакетов. В основном, import masnum.MyClass ищет файл MyClass.class в directoy masnum в любом из корней pathpath (которые обычно включают текущий каталог). –

+0

Я собирался попытаться ответить на этот вопрос, но: Это основные основы Java, для нас нет смысла делать целый Java-учебник в форме вопросов и ответов. Вам лучше будет читать (и работать) [учебник по Java] (http://www.programmingtutorials.com/java.aspx) или два. –

3

Очень вероятно, что программное обеспечение будет иметь классы с именем Logger, Database, Connection, Table и т. Д. Пакеты разделяют сферу применения этих классов, так что у вас нет проблем с дублирующимися классами.

Несколько примеров:.

  • ява *
  • org.apache **
  • com.yourcompany.yourproject..

Если вы не используете классы из пакета destinct, вам необходимо импортировать их .i.g.

import java.util.Date 

или

import java.sql.Date 
2

Это такой способ организовать ваши исходные файлы. Пакет содержит несколько файлов классов, файл классов содержит только открытый класс, класс содержит несколько методов и переменных.

2

Оператор пакета в Java используется для группировки нескольких связанных классов. Если у вас есть классы, которые занимаются исключительно с взаимодействием базы данных, было бы логично поставить их все под

com.example.myapp.persistence 

Это также обеспечивает бенефис разноса имени, помните, что во время выполнения части идентичности класса Java является его полным имя, то есть имя класса предшествует его именем пакета, как в

com.example.myapp.persistence.UserDAO 

Когда вы приложение растет, чтобы разместить более двух классов, это практичное и хорошая практика, чтобы организовать их в пакетах

0

В термине Layman, Предположим, что в колледже есть несколько отделений, таких как наука, искусство и т. Д. В каждом отделе есть сотрудник. В терминах объекта может быть несколько классов Employee, поэтому в java есть ограничение, что мы не можем поместить два класса в одно имя. Поэтому программист должен создавать разные пакеты для хранения в классе другого класса с тем же именем.