DEV Community

Exemplo de Acesso a Pacote

No exemplo apresentado, as classes Book e BookDemo pertenciam ao mesmo pacote, permitindo que BookDemo acessasse Book sem problemas, pois o acesso padrão concede visibilidade a todos os membros dentro do mesmo pacote.

No entanto, se as classes Book e BookDemo estivessem em pacotes diferentes, BookDemo não conseguiria acessar Book. Para permitir o uso de Book a partir de outros pacotes, é necessário fazer três mudanças na classe Book:

  • Declarar a classe Book como public: isso torna a classe acessível fora do pacote bookpack.
  • Tornar o construtor de Book público: isso permitirá criar instâncias de Book em outros pacotes.
  • Declarar o método show() como público: assim, ele pode ser invocado fora do pacote bookpack.

Exemplo de Código: Book Tornada Pública

  1. Definindo a Classe Book no Pacote bookpack (arquivo: Book.java)
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();
    }
}

Enter fullscreen mode Exit fullscreen mode

Exemplo: Acessando Book a partir de Outro Pacote

  1. Usando Book a partir do Pacote bookpackext (arquivo: UseBook.java) Neste exemplo, UseBook é uma classe localizada em um pacote diferente (bookpackext), e para usar Book, o nome da classe precisa ser qualificado com o nome completo do pacote (bookpack.Book).
// 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();
        }
    }
}

Enter fullscreen mode Exit fullscreen mode

Explicação das Alterações:

Qualificação da classe Book:
A classe Book é precedida pelo nome do pacote (bookpack.Book) para indicar ao compilador onde encontrar a definição da classe.
Sem essa qualificação, a classe UseBook não conseguiria localizar Book no pacote bookpack.

Alterações necessárias na classe Book:
Classe public: a declaração public class Book permite que Book seja acessível fora de seu pacote original.
Construtor public: torna possível criar objetos da classe Book a partir de outro pacote.

Método show() público: para que os detalhes dos livros possam ser exibidos fora do pacote bookpack.

Estrutura de Diretórios para Compilação e Execução:

src/
|-- bookpack/
|   |-- Book.java
|
|-- bookpackext/
|   |-- UseBook.java

Enter fullscreen mode Exit fullscreen mode

Passos para Compilar e Executar:
Compilar a classe Book:

javac src/bookpack/Book.java

Enter fullscreen mode Exit fullscreen mode

Compilar a classe UseBook a partir do diretório src:

javac src/bookpackext/UseBook.java

Enter fullscreen mode Exit fullscreen mode

Executar UseBook:

java -cp src bookpackext.UseBook

Enter fullscreen mode Exit fullscreen mode

Considerações:
Ao acessar uma classe pública de outro pacote, você pode usar o nome qualificado completo ou utilizar a instrução import para facilitar o uso da classe sem qualificar cada instância.
O exemplo mostra como a visibilidade de membros de classes (public, private, etc.) e a qualificação por pacote são usados para modularizar o código e controlar o acesso entre diferentes partes de um programa Java.

Top comments (0)