Pacotes e o Acesso a Membros

O controle de acesso no Java é mais complexo do que simplesmente usar public e private, pois também depende do pacote ao qual a classe pertence. Esse mecanismo combina a visibilidade dentro da classe e a visibilidade dentro do pacote, oferecendo níveis…


This content originally appeared on DEV Community and was authored by Java para Iniciantes (Oracle)

O controle de acesso no Java é mais complexo do que simplesmente usar public e private, pois também depende do pacote ao qual a classe pertence. Esse mecanismo combina a visibilidade dentro da classe e a visibilidade dentro do pacote, oferecendo níveis de acesso variados: private, public, protected e o acesso padrão (sem especificador).

Regras de Acesso:
public: visível em qualquer pacote.
private: acessível apenas dentro da classe.
protected: acessível dentro do pacote e também em subclasses de outros pacotes.
Acesso padrão: visível apenas dentro do mesmo pacote.

Tabela de Controle de Acesso a Membros de Classe

Image description

Image description

Exemplo: Controle de Acesso com Pacotes
Anteriormente, foi criado um pacote chamado bookpack que continha as classes Book e BookDemo. No exemplo abaixo, Book é modificada para ser acessível a partir de outros pacotes, e uma nova classe (UseBook) é criada em um pacote diferente (bookpackext).

Código Demonstrativo

  1. Definindo a Classe Book no Pacote bookpack (arquivo: Book.java):
package bookpack;

// Agora a classe Book é pública para ser acessada de fora do pacote.
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();
    }
}

  1. Usando Book a partir de um Pacote Diferente bookpackext (arquivo: UseBook.java):
// 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 seu pacote para utilizá-la.
        bookpack.Book books[] = new bookpack.Book[5];

        // Preenche a matriz 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();
        }
    }
}

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

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

Passos para Compilar e Executar:
Compilar a classe Book:

javac src/bookpack/Book.java

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

javac src/bookpackext/UseBook.java

Executar UseBook:

java -cp src bookpackext.UseBook

Explicações:

Classe Book:
Tornada pública (public class Book).
Construtor e método show() foram declarados como public para permitir o acesso a partir de outros pacotes.

Classe UseBook:
Está em um pacote diferente (bookpackext).
Acessa Book usando seu nome qualificado (bookpack.Book).
Sem essa qualificação, Book não seria reconhecida na compilação.

Considerações:
Quando uma classe pública reside em um pacote, ela deve ser referenciada pelo seu nome qualificado (nome do pacote + nome da classe).
Para facilitar o uso, a instrução import pode ser utilizada para trazer as classes públicas do pacote. Alternativamente, é possível qualificar cada referência (como em bookpack.Book).


This content originally appeared on DEV Community and was authored by Java para Iniciantes (Oracle)


Print Share Comment Cite Upload Translate Updates
APA

Java para Iniciantes (Oracle) | Sciencx (2024-09-28T16:36:47+00:00) Pacotes e o Acesso a Membros. Retrieved from https://www.scien.cx/2024/09/28/pacotes-e-o-acesso-a-membros/

MLA
" » Pacotes e o Acesso a Membros." Java para Iniciantes (Oracle) | Sciencx - Saturday September 28, 2024, https://www.scien.cx/2024/09/28/pacotes-e-o-acesso-a-membros/
HARVARD
Java para Iniciantes (Oracle) | Sciencx Saturday September 28, 2024 » Pacotes e o Acesso a Membros., viewed ,<https://www.scien.cx/2024/09/28/pacotes-e-o-acesso-a-membros/>
VANCOUVER
Java para Iniciantes (Oracle) | Sciencx - » Pacotes e o Acesso a Membros. [Internet]. [Accessed ]. Available from: https://www.scien.cx/2024/09/28/pacotes-e-o-acesso-a-membros/
CHICAGO
" » Pacotes e o Acesso a Membros." Java para Iniciantes (Oracle) | Sciencx - Accessed . https://www.scien.cx/2024/09/28/pacotes-e-o-acesso-a-membros/
IEEE
" » Pacotes e o Acesso a Membros." Java para Iniciantes (Oracle) | Sciencx [Online]. Available: https://www.scien.cx/2024/09/28/pacotes-e-o-acesso-a-membros/. [Accessed: ]
rf:citation
» Pacotes e o Acesso a Membros | Java para Iniciantes (Oracle) | Sciencx | https://www.scien.cx/2024/09/28/pacotes-e-o-acesso-a-membros/ |

Please log in to upload a file.




There are no updates yet.
Click the Upload button above to add an update.

You must be logged in to translate posts. Please log in or register.