如何使java类仅可用于包中的另一个类

时间:2014-10-16 02:28:04

标签: java

我有3个班级,BST,Term和WebPages。

BST是一个二元搜索树,每个节点都有术语。

WebPages实例化BST。

如何确保WebPages类可以使用BST类 ? (这是项目的要求)

它们应该在同一个包中,所以对我来说唯一有意义的就是WebPages中的嵌套类。是否有其他方法来限制对整个类的访问,以便同一个包中只有一个其他类可以“看到”它?

2 个答案:

答案 0 :(得分:2)

正如其他答案中所述,将BST隐藏到WebPages的合法方法是将其定义为静态内部类:

public class WebPages {

    private static class BST {

    }
}

如果您对在独立包中定义WebPages感到满意,可以将两个类放在同一个包中,但不要使用public BST类修饰符。您甚至可以在同一个文件WebPages.java中定义两个类,结构如下:

public class WebPages {

}
class BST {

}

包级隐藏的缺点是可以在同一个包中编写新类并获得对BST的访问权。

答案 1 :(得分:1)

看起来 内部课程 是您的最佳选择

这是来自JavaWorld的引用,它描述了完全相同的情况!

  

例如,树类可能有一个方法和许多辅助方法   执行树的搜索或步行。从面向对象   从角度来看,树是树,而不是搜索算法。然而,   你需要对树的数据结构有深入的了解   完成搜索。内部类允许我们删除该逻辑和   将它放入自己的班级。