Classes vs. Arquivos
Na maior parte do tempo, cada classe Java é definida em seu próprio arquivo *.java. Geralmente é public o que significa que qualquer código pode chamá-lo. Curiosamente, Java não exige que a classe seja public. Por exemplo, esta classe é apenas está boa:
1: class Animal {
2: String name;
3: }
Você pode até colocar duas classes no mesmo arquivo. Quando você faz isso, no máximo uma das classes no arquivo é permitido ser public. Isso significa que um arquivo contendo o seguinte também está correto:
1: public class Animal {
2: private String name;
3: }
4: class Animal2 {
5: }
Se você tem uma classe public, ela precisa corresponder ao nome do arquivo. Classe public Animal2 não pôde compilar em um arquivo chamado Animal.java. No Capítulo 5, discutiremos o que não são meios de acesso public.