簡體   English   中英

如何使一個Java類僅對包中的另一個類可用

[英]How to make a java class only available to one other class in a package

我有3個類,BST,Term和WebPages。

BST是一個二進制搜索樹,每個節點中都有術語。

WebPages實例化BST。

如何確保BST類可用於WebPages類? (這是項目的要求)

它們應該在同一個包中,所以對我來說唯一有意義的是WebPages中的嵌套類。 還有其他方法可以限制對整個類的訪問,以便同一Package中只有一個其他類可以“看到”它嗎?

如其他答案所述,將BST完全隱藏到WebPages的合法方法是將其定義為靜態內部類:

public class WebPages {

    private static class BST {

    }
}

如果您滿意於在獨立的程序包中定義WebPages ,則可以將兩個類放在同一程序包中,但不要使用BSTpublic class修飾符。 您甚至可以在同一文件WebPages.java定義兩個類,其結構如下:

public class WebPages {

}
class BST {

}

包級隱藏的不利之處在於,可以在同一包中編寫一個新類,並獲得對BST訪問權。

看起來內部類是您的最佳選擇

這是JavaWorld的引文,描述了完全相同的情況!

例如,樹類可能具有執行搜索或遍歷樹的方法和許多輔助方法。 從面向對象的角度來看,樹是樹,而不是搜索算法。 但是,您需要對樹的數據結構有深入的了解才能完成搜索。 內部類使我們可以刪除該邏輯並將其放入自己的類中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM