例如下面结构:
A---
   |---X
B---
   |---K
   |---L
   |---M
   |---N有A、B两个包,要B包内的K、L、M、N类均里不能被外界访问,只能访问A包内的X类。
要怎么做或怎么jar打包,才能做到这个效果?

解决方案 »

  1.   

    "要B包内的K、L、M、N类均里不能被外界访问,只能访问A包内的X类。""只能被A包内的X类访问" ?
      

  2.   

    回复:raistlic没错,是这样的意思。
    A 和 B 合成同一个包,那么就是X、K、L、M、N同包了?这样就解决吗?我只想到将K、L、M、N变为X的私有内部类,才解决
      

  3.   

    就是做一个jar,供别人调用,但是不给别人看到某些类。就像java里有些隐藏的sun包、类一样
      

  4.   

    1、private修饰词,表示成员是私有的,只有自身可以访问;   
    2、protected,表示受保护权限,体现在继承,即子类可以访问父类受保护成员,同时相同包内的其他类也可以访问protected成员。   
    3、无修饰词(默认),表示包访问权限(friendly, java语言中是没有friendly这个修饰符的,这样称呼应该是来源于c++ ),同一个包内可以访问,访问权限是包级访问权限;  
    4、public修饰词,表示成员是公开的,所有其他类都可以访问;
    5、类的访问限制,仅有public和包访问权限;   
       a、一个Java文件只能有一个public类  
       b、public类的名称必须同Java文件名完全一致
       c、若Java文件中没有public类,则文件名可以任意
    6、final关键字
       a、final数据成员,使用前总是被初始化并被强制要求在定义处或构造器中赋值;一旦赋值后,对于基本类型其值会恒定不变,而对于对象引用会始终指向赋值的对    象,但指向对象自身是可以修改的;  
      b、final参数,对于基本类型表示无法改变参数的值,对于对象引用表示无法改变引用所指的对象;
      c、final方法,保证方法不会在继承后修改和重载;所有的private方法都隐含式final的;Java中使用动态绑定(后期绑定)实现多态,除了static和final方法是使用    前期绑定的;
         d、final类,表示该类不可被继承。 
      

  5.   

    我常常觉得,Java的模块和接口的设计都是基于“包”这个单位的在同一个包内的不同类之间,访问控制不必分得那么清楚
    private 和 package private 都可以视为 private如果坚持要分清楚,就用静态内部类
      

  6.   

    除了用内部类,还有没有办法呢?隐藏整个包行不行,因为实在不想给别人直接调用。Java有些api也是隐藏不给别人调用的,又是怎么做到的?
      

  7.   

    A---
       |---X
    B---
       |---C
       |---K
       |---L
       |---M
       |---N明白怎么解决了,将K、L、M、N类前的public去掉,加上public C类,通过C类来代理访问K、L、M、N类。