提示された例では、Book クラスと BookDemo クラスが同じパッケージに属しており、標準アクセスでは同じパッケージ内のすべてのメンバーに可視性が付与されているため、BookDemo は問題なく Book にアクセスできます。
ただし、Book クラスと BookDemo クラスが異なるパッケージにある場合、BookDemo は Book にアクセスできません。他のパッケージから Book を使用できるようにするには、Book クラスに 3 つの変更を加える必要があります。
コード例: 公開された書籍
package bookpack; // Agora a classe Book é pública para permitir o acesso a partir de outros pacotes. public class Book { private String title; private String author; private int pubDate; // Construtor público public Book(String t, String a, int d) { title = t; author = a; pubDate = d; } // Método público para exibir os detalhes do livro public void show() { System.out.println(title); System.out.println(author); System.out.println(pubDate); System.out.println(); } }
例: 別のパッケージから書籍にアクセスする
// Esta classe está no pacote bookpackext. package bookpackext; // Usa a classe Book do pacote bookpack. class UseBook { public static void main(String args[]) { // Qualifica a classe Book com o nome do pacote para acessá-la. bookpack.Book books[] = new bookpack.Book[5]; // Cria uma lista de livros books[0] = new bookpack.Book("Java: A Beginner's Guide", "Schildt", 2014); books[1] = new bookpack.Book("Java: The Complete Reference", "Schildt", 2014); books[2] = new bookpack.Book("The Art of Java", "Schildt and Holmes", 2003); books[3] = new bookpack.Book("Red Storm Rising", "Clancy", 1986); books[4] = new bookpack.Book("On the Road", "Kerouac", 1955); // Exibe os detalhes de cada livro for (int i = 0; i < books.length; i++) { books[i].show(); } } }
変更点の説明:
書籍クラスの資格:
Book クラスの前にはパッケージ名 (bookpack.Book) が付けられ、クラス定義の場所をコンパイラーに指示します。
この修飾がなければ、UseBook クラスは bookpack パッケージ内で Book を見つけることができません。
Book クラスに必要な変更:
パブリック クラス: パブリック クラス Book 宣言により、元のパッケージの外部から Book にアクセスできるようになります。
パブリック コンストラクター: 別のパッケージから Book クラス オブジェクトを作成できるようにします。
パブリック show() メソッド: 書籍の詳細をブックパック パッケージの外に表示できるようにします。
コンパイルと実行のディレクトリ構造:
src/ |-- bookpack/ | |-- Book.java | |-- bookpackext/ | |-- UseBook.java
コンパイルと実行の手順:
Book クラスをコンパイルします:
javac src/bookpack/Book.java
src ディレクトリから UseBook クラスをコンパイルします。
javac src/bookpackext/UseBook.java
UseBook を実行します:
java -cp src bookpackext.UseBook
考慮事項:
別のパッケージからパブリック クラスにアクセスする場合、完全修飾名を使用するか、インポート ステートメントを使用して、各インスタンスを修飾せずにクラスを使いやすくすることができます。
この例では、クラス メンバーの可視性 (パブリック、プライベートなど) とパッケージごとの修飾を使用してコードをモジュール化し、Java プログラムの異なる部分間のアクセスを制御する方法を示します。
以上がパッケージアクセスの例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。