Escrevemos alguns programas Java. Cada programa Java anterior foi salvo como um arquivo, como Test.java. Posteriormente, o programa é compilado em Test.class. Acabamos usando $java Test para executar o programa.
No entanto, em um projeto Java normal, muitas vezes precisamos escrever mais de um programa .java, e o produto Java final inclui todos os programas Java. Portanto, Java precisa resolver o problema de organização de programas Java. O objetivo de um pacote é organizar melhor os programas Java.
Criação de pacote
A criação de pacotes é muito simples. Precisamos apenas adicionar o pacote no início do programa Java. Vamos pegar a classe Human como exemplo e colocá-la no pacote:
Copie o código do código da seguinte forma:
pacote com.vamei.society;
classe pública Humano
{
/**
* construtor
*/
humano público (int h)
{
esta.altura = h;
System.out.println("Eu nasci");
}
/**
*acessador
*/
público int getHeight()
{
retorne esta altura;
}
/**
* mutador
*/
public void growHeight(int h)
{
esta.altura = esta.altura + h;
}
altura interna privada;
}
O código para copiar a primeira linha das instruções acima é o seguinte:
pacote com.vamei.society;
Indica que o programa está no pacote com.vamei.society. com.vamei (o inverso de vamei.com) representa o nome de domínio do autor do pacote (infelizmente, este nome de domínio foi registrado por outra pessoa, por isso é usado apenas para fins de demonstração). Java exige que os pacotes tenham prefixos de nome de domínio para distinguir diferentes autores. Sociedade é outro nome de caminho local. com.vamei.society juntos formam o nome do pacote.
Os pacotes fornecem um espaço de nomes para programas Java. O caminho completo de uma classe Java consiste em seu pacote e nome de classe, como com.vamei.society.Human. O programa Human.java correspondente deve ser colocado em com/vamei/society/. As classes são identificadas por seus caminhos completos, então você pode ter classes com o mesmo nome em pacotes diferentes sem que o Java fique confuso. Por exemplo, com.vamei.society.Human e com.vamei.creature.Human são duas classes diferentes.
Vejamos mais um detalhe. A classe Human é pública e seu construtor também é público, portanto qualquer outro objeto pode chamar esta classe. Como dissemos antes, só pode haver uma classe pública em um arquivo Java, e a classe deve ter o mesmo nome do arquivo .java. Uma classe não precisa da palavra-chave public, que na verdade representa uma permissão: a classe é visível no pacote em que está localizada. Ou seja, outros programas Java do pacote podem acessar a classe. Este é o acesso padrão em Java.
Da mesma forma, os membros de um objeto também podem ter permissões padrão (visíveis em pacotes). Por exemplo, removemos a palavra-chave public da frente do método getHeight().
chamada de pacote
Precisamos apenas colocar Human.class compilado por Human.java na pasta correspondente. Por exemplo, coloquei Human.class em com/vamei/society/. Na verdade, você também pode colocar o arquivo .java no caminho correspondente e o Java será compilado automaticamente quando usado.
Se o pacote inteiro (ou seja, a pasta com) estiver localizado no caminho de trabalho atual, nenhuma configuração especial será necessária para usar o pacote, como o seguinte TestAgain.java:
Copie o código do código da seguinte forma:
importar com.vamei.society.*;
classe pública TestAgain
{
público estático void principal(String[] args)
{
Humano aPerson = novo Humano(180);
System.out.println(aPerson.getHeight());
}
}
import é usado para identificar caminhos. Usando a instrução import, podemos introduzir classes no caminho correspondente. *Indica a introdução de todas as classes na pasta sociedade. Em TestAgain, usamos a classe Human diretamente.
Também podemos fornecer o caminho completo para a classe. Isso pode distinguir entre classes com o mesmo nome, mas caminhos diferentes, como:
Copie o código do código da seguinte forma:
classe pública TestAgain
{
público estático void principal(String[] args)
{
com.vamei.society.Human aPerson =
novo com.vamei.society.Human(180);
System.out.println(aPerson.getHeight());
}
}
Como fornecemos o caminho de classe completo, não há necessidade de usar a instrução import.
Se o pacote não for colocado no caminho de trabalho atual, precisaremos notificar o Java ao usar o pacote. Por exemplo, colocamos o pacote em /home/vamei/javapackage, para que Human.class esteja localizado em /home/vamei/javapackage/com/vamei/society/Human.class, e nosso caminho de trabalho seja /home/vamei. Desta forma, o pacote não pode ser encontrado. Um método é usar -classpath para especificar o caminho da pasta onde o pacote está localizado ao usar javac e java, por exemplo:
Copie o código do código da seguinte forma:
$javac -classpath /home/vamei/javapackage:.
$java -classpath /home/vamei/javapackage:.
Basta procurar o pacote em /home/vamei/javapackage e o caminho de trabalho (.). Java pode encontrar a classe Human em /home/vamei/javapackage e a classe TestAgain em .
Além disso, você também pode definir a variável de ambiente CLASSPATH do sistema e adicionar o caminho acima à variável sem digitar a opção -classpath todas as vezes.
Mecanismos semelhantes a pacotes também são comuns em outras linguagens, como o mecanismo de importação em Python. O objetivo é organizar e usar melhor os programas existentes. Usando pacotes, podemos facilmente expandir programas Java e usar bibliotecas de programas Java existentes. Observe que o pacote gerencia arquivos .class. Java é conhecido como "Compile Once, execute em qualquer lugar" (Compile Once, execute em qualquer lugar). Os arquivos .class podem ser executados em qualquer plataforma equipada com Java Virtual Machine (JVM, Java Virtual Machine), o que nos ajuda a superar dificuldades de portabilidade de programas causadas por diferenças de sistema.
As diferenças entre os sistemas podem ser muito grandes. Se escrevermos um programa em linguagem C, o programa fonte precisa ser recompilado em cada plataforma para se adaptar às diferentes condições de hardware. A máquina virtual Java conecta a plataforma e o universo Java e forma a camada intermediária entre o hardware e a lógica de programação. A JVM esconde diferenças de hardware e fornece aos programadores um universo Java “padrão”. O arquivo .class pode ser considerado a moeda que circula neste universo Java. Com a infraestrutura JVM e assistência ao gerenciamento de pacotes, os programas Java alcançam boa portabilidade.
Resumir
pacote, importação
Permissões padrão: visíveis no pacote
-classpath, CLASSPATH