Pacotes em Java
Coloque a classe Bell numa pasta chamada kit com a primeira linha package kit; e um método static ring() que imprime ding. Em Lobby.java ao lado dessa pasta — não dentro de kit — chame kit.Bell.ring(); a partir de main. Compile a partir da pasta pai e execute java Lobby. O ecrã deve mostrar uma linha: ding. O nome do pacote e o nome da pasta coincidem. Chamar com kit.Bell à frente é o que esta página ensina. Deixe a palavra import para a página seguinte.
Um nome de pasta que o ficheiro declara
Até agora cada classe ficava numa pasta plana. Um pacote agrupa classes sob um nome de pasta. A primeira linha do ficheiro deve dizer esse nome: package kit;. O ficheiro Bell.java deve viver dentro de uma pasta chamada kit. Se a pasta e a linha package não coincidem, javac queixa-se.
Crie primeiro a pasta kit. Dentro dela crie Bell.java. A primeira linha é package kit;. Depois a linha public class é public class Bell. Não deixe um nome de classe antigo Gate ou Tag aqui. Escreva um método static:
public static void ring() { System.out.println("ding"); }
Ponha public no método para uma classe fora do pacote o poder chamar. Não há main em Bell.java. Guarde antes de compilar.
package kit;
public class Bell {
public static void ring() {
System.out.println("ding");
}
}
Lobby chama kit.Bell.ring
Crie Lobby.java na pasta pai — ao mesmo nível da pasta kit, não dentro de kit. A linha public class é public class Lobby. Dentro de main, escreva kit.Bell.ring();. Não escreva import kit.Bell; nesta página. O nome completo kit.Bell basta para a chamada.
Mantenha Lobby como a classe que tem main. Não coloque main dentro de Bell nesta lição. Se um ficheiro Pier restante da página access ainda está por perto, não execute java Pier nesta lição — execute java Lobby depois de compilar a partir da pasta pai.
public class Lobby {
public static void main(String[] args) {
kit.Bell.ring();
}
}
Da pasta pai que guarda Lobby.java e a pasta kit, execute javac kit/Bell.java Lobby.java. No Windows a barra pode ser kit\Bell.java na mesma ideia — aponte javac para o ficheiro dentro da pasta do pacote, depois para Lobby.java. Quando parênteses, chavetas e ponto e vírgula coincidem, javac não escreve linha própria. Depois execute java Lobby — não java Lobby.java, e não java kit.Bell. Tire o final .java do comando de execução. Arranque a classe que tem main. Os mesmos comandos funcionam no Windows e no macOS quando os caminhos coincidem com o seu shell.
O programa deve imprimir uma linha e parar: ding. Não deve pedir que você digite. Se o terminal esperar entrada do teclado, uma chamada nextLine de um exercício antigo ainda está num ficheiro. Apague essa chamada e mantenha kit.Bell.ring(); em Lobby, com package kit; em Bell.
Percorra a execução uma vez. A Java começa em Lobby.main. A chamada kit.Bell.ring() encontra a classe Bell no pacote kit e corre o método static. O corpo imprime ding. O ecrã mostra ding. Nada mais deve imprimir. Se você vir 9 ou ok, ainda está a executar um programa Pier ou Yard antigo de uma página anterior.
Se Bell.java estiver ao lado de Lobby.java sem pasta kit enquanto o ficheiro ainda diz package kit;, javac recusa. Mova o ficheiro para kit. Se você chamar Bell.ring(); sem kit. de fora do pacote, javac não vê o nome curto nesta página — mantenha kit.Bell.ring();. O nome do pacote faz parte do nome completo do tipo até a página seguinte ensinar import.
Pasta e linha package lado a lado
Uma tabela curta mantém a correspondência clara.
📊 folder vs package line
| Peça | Nesta página |
|---|---|
| nome da pasta | kit |
| primeira linha em Bell.java | package kit; |
| chamada a partir de Lobby | kit.Bell.ring(); |
| import | não nesta página — lição seguinte |
A tabela é só um lembrete. As peças que você mantém são package kit; no ficheiro Bell, o caminho sob kit, e kit.Bell.ring(); em Lobby. |
Comparado com access e com uma pasta plana
Na página access, Gate e Pier partilhavam uma pasta com um campo private. Isso ainda funciona. Esta página acrescenta uma pasta de pacote e uma linha package. Um demo restante Gate g = new Gate(9); g.show(); é outra lição. Para esta página mantenha kit/Bell.java e Lobby.java e kit.Bell.ring();.
Você ainda pode usar pastas planas para demos muito pequenos. Esta lição escolhe um pacote para você ver o nome à frente da classe. Não misture g.show() e kit.Bell.ring() no mesmo demo Lobby nesta página. Um caminho claro chega: linha package, pasta correspondente, chamada completa a partir de Lobby.
Compile a partir do pai, não só de dentro de kit
Fique na pasta pai quando compilar e quando executar java Lobby. Se você fizer cd para dentro de kit e tentar executar Lobby daí sem corrigir o classpath, o caminho curto da lição parte. Mantenha o pai como pasta de trabalho nesta página. O ficheiro .class de Bell deve aparecer sob kit depois de uma boa compilação, ao lado de Bell.java.
Se o ecrã mostrar 9 ou ok, um programa Pier ou Yard antigo ainda está a correr. Passe para java Lobby. Se javac não encontrar kit.Bell, verifique a ortografia do nome da pasta e a linha package kit; carácter a carácter.
O que isto deixa para import
Esta página escreve o nome completo kit.Bell em cada chamada. Uma página mais tarde — import — mostra como import kit.Bell; deixa você escrever o nome curto Bell em Lobby. Fique aqui com o nome completo. Não invente import nesta página a menos que já o conheça; o objetivo da lição é a pasta de pacote e kit.Bell.ring();.
Quando ficheiros antigos Gate.java ou Pier.java ainda estão na pasta pai, deixe-os ou apague-os só se confundirem o seu comando de compilação. Execute java Lobby depois de compilar o par de pacote desta lição.
Antes de import
Você pode colocar Bell.java sob a pasta kit com package kit; e public static void ring() que imprime ding, e a partir de Lobby chamar kit.Bell.ring(); sem import. Compile a partir da pasta pai e execute java Lobby. O ecrã mostra ding. O nome do pacote coincidiu com a pasta. A página seguinte é import, onde um nome curto basta depois de uma linha import.
Mantenha package kit; como primeira linha em Bell. Mantenha o ficheiro dentro de kit. Mantenha a chamada como kit.Bell.ring();. Esses três hábitos são o ponto de controlo desta página antes de avançar. Quando o ecrã mostra ding a partir da pasta pai, o layout de pacote faz o trabalho desta lição.
🧠 Teste Seu Conhecimento
Teste Seu Conhecimento
Desafie-se com este questionário interativo e veja o quão bem você entende o tópico
📝 Instruções
- Leia cada pergunta cuidadosamente
- Selecione a melhor resposta para cada pergunta
- Você pode refazer o quiz quantas vezes quiser
- Seu progresso será mostrado no topo