Classes em Java
Uma classe é um tipo com nome que declara num ficheiro .java. Ponha public class Badge num ficheiro chamado Badge.java. Dentro desse tipo escreva um método static curto show que imprima ready. Num segundo ficheiro chamado Desk.java ponha public class Desk com um main que chame Badge.show();. Compile ambos os ficheiros e depois execute java Desk. O ecrã deve mostrar uma linha: ready. Aqui não conta para trás com recursão. Está a nomear um tipo no próprio ficheiro e a pedir que o método desse tipo imprima. Esse segundo tipo com nome — uma classe que não é só o ficheiro que arranca — é o que esta página ensina.
O tipo vive no próprio ficheiro
Até às páginas de métodos, quase cada demo guardava main e os métodos auxiliares dentro de uma só public class. Isso continua a funcionar. Esta página acrescenta de propósito uma segunda public class. Badge é um nome de tipo. Não precisa de ser o programa que arranca. Desk é o programa que arranca. Cada public class fica num ficheiro cujo nome coincide exatamente com o nome da classe, incluindo maiúsculas.
Crie primeiro Badge.java. A primeira linha do tipo é public class Badge. Não escreva public class Desk dentro deste ficheiro. Não deixe aqui um nome de classe antigo Ladder ou Gate. O compilador liga o nome da public class ao nome do ficheiro. Se o ficheiro for Badge.java e a linha disser public class Ladder, o javac recusa.
Dentro das chavetas de Badge, escreva static void show(). O corpo é uma impressão: System.out.println("ready");. Mantenha void nesta página. O método não devolve um número. Só escreve uma palavra. Em Badge.java não há main nesta página. É intencional. Uma classe pode guardar métodos sem ser a classe de arranque.
Guarde Badge.java antes de compilar. O primeiro programa em caixa é esse ficheiro sozinho.
public class Badge {
static void show() {
System.out.println("ready");
}
}
Desk arranca; Badge imprime
Crie um segundo ficheiro na mesma pasta: Desk.java. A linha public class é public class Desk. Dentro de main, escreva uma chamada: Badge.show();. Essa chamada nomeia o tipo Badge, um ponto e depois o método show. Não escreva só show(); dentro de Desk a menos que show também viva em Desk. Nesta página show pertence a Badge, por isso a chamada leva o nome do tipo.
public class Desk {
public static void main(String[] args) {
Badge.show();
}
}
Ambos os ficheiros devem estar na mesma pasta para o javac os ver juntos. Dessa pasta execute javac Badge.java Desk.java. Também pode compilar primeiro Badge.java e depois Desk.java; ambas as ordens funcionam quando os ficheiros estão completos. Quando parênteses, chavetas e ponto e vírgula coincidem, o javac não escreve uma linha própria. Depois execute java Desk — não java Desk.java, nem java Badge. Tire o final .java do comando de execução. Arranque a classe que guarda main. Os mesmos dois tipos de comando funcionam no Windows e no macOS.
O programa deve imprimir uma linha e parar: ready. Não deve pedir que escreva. Se o terminal esperar entrada do teclado, ainda há uma chamada nextLine de um exercício antigo num ficheiro. Apague-a e mantenha Badge.show(); em Desk mais o método show em Badge.
Percorra a execução uma vez. Java começa em Desk.main. A chamada Badge.show() entra no método do tipo Badge. Esse método imprime ready e regressa. Depois Desk termina. A palavra no ecrã veio de Badge, não de um println escrito dentro do próprio Desk. Essa separação é o ponto: uma classe arranca o programa; outra classe possui o auxiliar.
O nome do ficheiro e public class devem coincidir
Leia o emparelhamento uma vez numa tabela pequena. Cada public class possui um nome de ficheiro.
📊 file, public class, role
| Ficheiro | public class | Papel nesta página |
|---|---|---|
Badge.java |
Badge |
tipo que guarda show |
Desk.java |
Desk |
programa que guarda main |
Se mudar o nome do ficheiro para badge.java com b minúsculo enquanto a linha ainda diz public class Badge, alguns sistemas tratam o desajuste como erro. Mantenha o B maiúsculo nos dois sítios nesta forma de principiante. Se pôr public class Badge e public class Desk no mesmo ficheiro, o javac recusa: uma public class por ficheiro. Classes auxiliares private no mesmo ficheiro ficam para cursos posteriores. Aqui mantém dois ficheiros public.
Um erro comum é executar java Badge porque acabou de escrever Badge.java. Essa classe não tem main nesta página, por isso a execução não arranca. Execute java Desk. Outro erro é escrever show(); dentro de Desk sem o prefixo Badge. quando show só existe em Badge. O compilador procura então show dentro de Desk e não encontra.
Demos de recursão sobrantes podem confundir a pasta. Um ficheiro ainda chamado Ladder.java com down(3) é outro programa. Mantenha a pasta desta lição centrada em Badge.java e Desk.java enquanto aprende a forma de dois ficheiros. Aqui não precisa de down.
Compile primeiro o tipo, depois o arranque
Pode praticar o passo de compilar em pedaços menores. Primeiro compile só o tipo: javac Badge.java. Esse comando verifica Badge mesmo que nada tenha arrancado ainda. Um ficheiro de classe pode compilar sem main. Depois compile o arranque: javac Desk.java. Se Badge já estiver compilado na mesma pasta, Desk pode resolver o nome Badge na chamada. Por fim execute java Desk e confirme a única linha ready.
Se javac Desk.java disser que não encontra o símbolo Badge, verifique três coisas. A pasta deve guardar Badge.java ou a classe compilada Badge ao lado de Desk.java. A chamada deve escrever Badge com as mesmas maiúsculas do tipo. O nome do método depois do ponto deve ser show, a coincidir com o cabeçalho em Badge.
Escrever System.out.println("Badge"); dentro de Desk imprime a palavra Badge. Não chama o método do tipo. Mantenha Badge.show(); quando quiser a impressão que vive em Badge.
O que esta página ainda não faz
Esta página não escreve new Badge(). Criar um objeto a partir de uma classe é a página seguinte. Aqui a chamada é Badge.show() — um método static no próprio nome do tipo. Também ainda não guarda campos num badge. Os campos esperam uma página mais tarde neste módulo. O trabalho agora é só o tipo com nome no próprio ficheiro, a linha public class coincidente e uma chamada que usa esse nome de tipo.
Pode mudar a palavra impressa dentro de show para set e recompilar ambos os ficheiros (ou pelo menos Badge.java, depois executar Desk outra vez). O ecrã deve seguir a string que pôs em Badge. Desk mantém a mesma chamada. Outra forma de ver a separação: edite o método do tipo, mantenha a chamada do arranque.
Antes de objects
Pode declarar public class Badge em Badge.java, pôr dentro static void show() e chamar Badge.show(); a partir de Desk.main. O nome do ficheiro e o da public class coincidem. Compile o tipo e o arranque, depois execute java Desk. O ecrã mostra a linha que show imprime. Uma classe é esse tipo com nome. A página seguinte é objects, onde constrói um valor a partir de uma classe com new.
🧠 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