个人认为包是一些类的集合,就像MFC的类库一样,提供一些类的方法。至于访问控制的问题,看看java编程思想吧。

解决方案 »

  1.   

    声明称private,或者干脆不加(默认是private)。只能该class中访问。
    包,给我的感觉象是工程
    是介于系统其他文件和自身class之间的层次,不象类内部那么大的关联度,也不象系统其他文件之间没有关系。
    呵呵,或者说象c里面的.a吧
    关于public等之间的区别,《think in java》第一章有清楚的描述
      

  2.   

    to cat_hangzhou(cat)声明一点,默认是default,与protected的区别就是不能被子类用!
    区别我差不多都知道了,只不过觉得有疑问,想证实一下是不是自己孤陋寡闻!
    继续继续!
      

  3.   

    其实包就是一个工程,主要是便于管理所用,至少我是这么理解的(jb新建一个工程,就是一个package,将其它零碎删除都行)
      

  4.   

    因为对于同一个包来说,类之间的关系还是比较密切的,而
    java中有没有象c++那样使用friend,也就是扩充了protected
    来代替friend吧。而且由于是在同一个包中的,进行控制也
    很容易,就算将来要做修改,其范围也只是同一个包而已。
    误导与否,只是看你的第一印象是什么,如果一开始你就
    被告知protected就是包内可访问的,你就会觉得c++的protected
    是在误导了。其实严格的说来,包的范围内进行控制,比
    子类范围内进行控制更容易,因为一个包的修改更新,一般都是同
    一个组织进行的,而子类,就有可能有成千上万的用户了,
    那么这样,是不是又要提供一个包内可访问,子类不能访问
    的修饰符呢?不同的人有不同的需要,要提供一个大而全的
    语言,适合所有人的需要,必然导致语言的复杂性的增加,
    入门的门槛必然就会提高,这样的话,java就不会有今天
    这样的发展。
      

  5.   

    to zfluo:有一个包内可访问,子类不能访问
    的修饰符啊?不加任何修饰符的默认就是这种情况。但你前面的说法还是有道理的。只不过我说的情况应该也是存在的:就是只能子类访问,而包内不能访问。有一种理解,同一个包肯定是有一个人或小组开发的,其中的访问控制要求比较低,基本上像开发一个类文件一样,你不用过多考虑有哪些变量会被误改等。当基于一种假设的考虑一般很难做到完整!举个例子,如果有一个变量是打算子类继承的,但我不希望一个开发小组的人不小心直接改动它,如果那种情况下束手无策的话,让人失望。其实C++很多特性如多重继承都是在发现一种情况不能表达后加进去的,你可以不用或很少用或尽量不用,但你不能想用的时候发现根本没办法!:(