用于工程管理吧
还有,当你用相同package的
类是不需要import了
除了private和protect类型的类

解决方案 »

  1.   

    当你要写JAVA的程序是,绝大多数情况下要同时使用多个文件中的类或interface,这时如果用import指令一个一个的把类导入,就会很费时间,所以站在管理角度上讲,就需要用package把这些interface组织起来。通过类package的组织和导入,就可以很方便的导入需要的类和interface函数库。
    另外,在同一个package中的类,可以直接引用(除private、protect),不需要再导入了。
      

  2.   

    不用PACKAGE,编译后都放入一个目录中,效果不是一样吗?反正都要拷贝class文件,package岂不多余?
      

  3.   

    其实书上一般都有比较详细的说明。
    package一般是将一些功能相近的类放在一起,便于管理引用和识别。
    可以想象一下,如果没有包的区别,类的同名将不可避免。
    所以很多开发的第三方的类都将自己的域名倒转加到类前面作为包名来以示区分。
      

  4.   

    lmy2000说的是工程管理方面了
    其实在一个package里面如果定义class
    的时候没有标注是public之类的
    那么就是java的default属性,在同包里面是
    可以引用的
    对于开放性来说:
    PUBLIC>PROTECT>DEFAULT>PRIVATE
    所以可以节省了思考类的访问问题
      

  5.   

    谢谢几位的回答,但我问的不是放到一个目录,打成一个包的好处,我问的是既然都是放到一个目录,编译以后拷贝一下好了,何必再用个PACKAGE呢?
      

  6.   

    package是必须的,他代表当前class文件是
    packname.yourclass.class而不是yourclass.class
    有package命令编译程序会自己打包的,并把自己放到里面
      

  7.   

    jdk就是一个很好的例子,它含有很多包如:java.lang;java.applet;java.awt还有很多。
    当你要引用这些包时,你说是把源文件再考一遍到你的程序中还是只要指定一下classpath
    变量方便。如果你只有几个类当然没什么必要打包,当你的项目很大是呢,不打包把他们放
    在一起,那你自己都不知道管理你类了,更无从优化你的代码。好好想想吧。
      

  8.   

    答案是唯一的
    就是 命名空间的管理
    打个比方 
    a写了一个类叫Util
    b写了一个类也叫Util
    那启不是重了.
    但java中类名指的是 包名+类名
    所以如果a,b都按规则起包名的话
    那就是a.Util/b.Util 就不重了
    包名的规则是什么呢,就是最好和域名联系在一起
    所以就有了
    com.ibm.xxxClass
    com.sun.xxxClass
      

  9.   

    放在同一个目录里,JAVA编译器会默认他们是在一个包里,只不过是隐式而已,不象使用PACKAGE关键字一样是显式指定。
      

  10.   

    biti_9512207(波波斯基) 说的没错!
      

  11.   

    你是说,只要把几个文件都PACKAGE到同一个目录,不管他们物理上是否都被拷入一个目录下,它们在逻辑上就属于这个包的一个类了吗?
    那又怎样单独运行这些包中的类呢?
      

  12.   

    如果没用PACKAGE ,用import导入的*.class,是不会根据目录来判断两个类之间的差异吗?
    如import mypackage.Applet.class;(mypadckage是个目录,在CLASSPATH下的,但Applet.class只是在外面编译了一下拷入mypackage中,没用package包)                 在同一个文件中又import java.applet.*;就会出现重名问题吗 ?
      

  13.   

    老兄,如果你import的两个包中都有一个叫Applet的类的存在,
    那你在程序里如果直接只写Applet的话,
    编译器就会告诉你有重名存在,要你写清楚一点,也就是要清楚地这样写:
    public class xxxx extends java.awt.Applet 而不是 public class xxx extends Applet,
    否则根本就通不过编译的,不信尽管一试。biti_9512207讲的没错,这就是一个命名空间的问题,
    而且这是一个优点,不是你想象的一个不方便之处,
    可以去参看一下为什么C++中要引入namespace这个关键字的用意,
    这正是java是从C++中发展过来,而且吸收了C++的教训之后才拥有的先进特性之一!
      

  14.   

    如果你自已的Applet.class 没用package 声明过,只是编译后拷到mypackage目录下的,
    那么你用import mypackage.Applet; (注意:没有import mypackage.Applet.class 这种写法),就根本找不到这个类的!不信的话试试看好了。
    另外如果import mypackage.Applet; 之后又import java.awt.*;
    那么只要你直接引用Applet,就通不过编译!也就试试看好了。
      

  15.   

    你是说,只要把几个文件都PACKAGE到同一个目录,不管他们物理上是否都被拷入一个目录下,它们在逻辑上就属于这个包的一个类了吗?
    那又怎样单独运行这些包中的类呢? 
      

  16.   

    你是说,只要把几个文件都PACKAGE到同一个目录,不管他们物理上是否都被拷入一个目录下,它们在逻辑上就属于这个包的一个类了吗?
    那又怎样单独运行这些包中的类呢?   
      

  17.   

    运行包中的类,与运行不是包中(也就是指没有用package声明过的类)是一样的,
    java 类名
    但是要指出的一点,一个类的名字全称就应该是 包名.类名! 只有一个例外就是没有用package声明过的类,包名是空的。所以运行一个包中的类例子如下:package abc;
    public class def {
     public static void main(String argv[]) {
        ....
     } ....
    }运行方法为: java abc.def
    你该知道一个类可运行必须要有一个main方法吧。:)