我有3个班级,BST,Term和WebPages。
BST是一个二元搜索树,每个节点都有术语。
WebPages实例化BST。
如何确保WebPages类可以使用BST类 ? (这是项目的要求)
它们应该在同一个包中,所以对我来说唯一有意义的就是WebPages中的嵌套类。是否有其他方法来限制对整个类的访问,以便同一个包中只有一个其他类可以“看到”它?
答案 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的引用,它描述了完全相同的情况!
例如,树类可能有一个方法和许多辅助方法 执行树的搜索或步行。从面向对象 从角度来看,树是树,而不是搜索算法。然而, 你需要对树的数据结构有深入的了解 完成搜索。内部类允许我们删除该逻辑和 将它放入自己的班级。