在所提供的示例中,类 Book 和 BookDemo 属于同一个包,允许 BookDemo 毫无问题地访问 Book,因为标准访问授予同一包中所有成员的可见性。
但是,如果 Book 和 BookDemo 类位于不同的包中,BookDemo 将无法访问 Book。为了允许使用其他包中的 Book,必须对 Book 类进行三处更改:
代码示例:公开图书
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 类对象。
Public show() 方法:以便可以在 bookpack 包外显示书籍详细信息。
编译和执行的目录结构:
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
注意事项:
当从另一个包访问公共类时,您可以使用完整限定名或使用 import 语句来使类更易于使用,而无需限定每个实例。
该示例展示了如何使用类成员可见性(公共、私有等)和每个包的限定来模块化代码并控制 Java 程序不同部分之间的访问。
以上是包访问示例的详细内容。更多信息请关注PHP中文网其他相关文章!