Carregando...

Campos em Java

Coloque um campo int chamado fill dentro de uma classe Cup em Cup.java. Em Shelf.java, construa um cup com Cup c = new Cup();, guarde um número com c.fill = 3;, depois imprima esse campo com System.out.println(c.fill);. Compile ambos os ficheiros e execute java Shelf. O ecrã deve mostrar uma linha: 3. O campo guarda dados nesse um objeto. Você chega a ele pela variável que nomeia o objeto. Guardar e ler esse valor no objeto é o que esta página ensina.

Um lugar para dados no objeto

Na página de objetos, beep só imprimia. Não guardava um número para depois. Um campo é um nome declarado dentro da classe onde cada objeto pode manter o seu próprio valor. Depois de new construir o objeto, você atribui o campo pela variável do objeto e depois pode imprimi-lo.
Crie Cup.java primeiro. A linha public class é public class Cup. Não deixe um nome de classe antigo Chip ou Badge aqui. Dentro das chavetas da classe, escreva uma linha de campo: int fill;. Não há método nesta primeira caixa. Não há main em Cup.java nesta página. Guarde antes de compilar.

Cup with fill field

java
public class Cup {
    int fill;
}

Shelf atribui fill e depois imprime

Crie Shelf.java na mesma pasta. A linha public class é public class Shelf. Dentro de main, escreva três linhas nesta ordem: Cup c = new Cup();, depois c.fill = 3;, depois System.out.println(c.fill);. A primeira linha constrói o objeto. A segunda guarda 3 no fill desse objeto. A terceira imprime o número guardado.

Shelf sets and prints fill

java
public class Shelf {
    public static void main(String[] args) {
        Cup c = new Cup();
        c.fill = 3;
        System.out.println(c.fill);
    }
}

Da pasta que guarda ambos os ficheiros, execute javac Cup.java Shelf.java. Você pode compilar Cup.java primeiro e Shelf.java em seguida quando ambos estiverem completos. Quando parênteses, chavetas e ponto e vírgula coincidem, javac não escreve linha própria. Depois execute java Shelf — não java Shelf.java, e não java Cup. Tire o final .java do comando de execução. Arranque a classe que tem main. Os mesmos comandos funcionam no Windows e no macOS.
O programa deve imprimir uma linha e parar: 3. 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 as três linhas acima em Shelf, com o campo fill em Cup.
Percorra a execução uma vez. A Java começa em Shelf.main. new Cup() constrói um objeto e guarda-o em c. A atribuição c.fill = 3 escreve 3 no campo desse objeto. println(c.fill) lê o mesmo campo e imprime 3. O número no ecrã é o valor guardado no objeto, não uma impressão fixa de uma string como "ok".
O nome de campo fill declara-se uma vez na classe. Cada objeto construído a partir de Cup recebe o seu próprio espaço para esse nome. Quando você escreve c.fill, nomeia primeiro o objeto e depois o espaço nesse objeto. Essa ordem — objeto, depois campo — é a forma que esta página mantém.

Classe, objeto e campo lado a lado

Leia os três nomes uma vez numa tabela pequena. A linha do campo passa sempre por um objeto nesta página.

📊 class object field

Name What it is on this page
Cup the class / type in Cup.java
c one object built with new Cup()
c.fill the int stored on that object

Escrever Cup.fill = 3; sem um objeto não corresponde a esta forma de principiante. O campo pertence a cada objeto depois de new. Construa primeiro, depois atribua pela variável. Escrever só new Cup(); sem guardar o resultado também deixa você sem nome para fill. Mantenha Cup c = new Cup(); e depois c.fill = 3;.
Um demo antigo de objetos pode confundir a pasta. Um ficheiro que ainda chama c.beep(); com uma classe Chip é a lição anterior. Para esta página mantenha Cup e Shelf e o campo fill. Você não precisa de beep aqui.
Se você imprimir o próprio c com System.out.println(c);, o ecrã não mostra um 3 limpo. Imprime um texto padrão de objeto. Para ver o número guardado, imprima c.fill.

Dois cups mantêm fills separados

Você pode construir dois objetos a partir de Cup. Cada um tem o seu próprio fill. Mudar um não muda o outro.
Em Shelf, você pode escrever Cup a = new Cup(); e Cup b = new Cup();, depois a.fill = 2; e b.fill = 9;, depois imprimir a.fill e b.fill. Depois de javac Cup.java Shelf.java e java Shelf, o ecrã deve mostrar 2 numa linha e 9 na seguinte. Ambos os objetos partilham o texto da classe que declara fill, mas cada objeto guarda o seu próprio número.
Se ambas as impressões mostrarem o mesmo valor quando você queria dois números diferentes, verifique que atribuiu ambos os campos e que não escreveu Cup b = a;. Essa linha faz b referir o mesmo objeto que a, por isso ambos os nomes partilham um fill. Nesta página use duas expressões new Cup() quando quiser dois fills separados.
Você não precisa de um terceiro programa em caixa para essa prática. Edite Shelf com cuidado, recompile e execute de novo. Depois pode restaurar a caixa de um cup se quiser a primeira forma do quiz.

O que os construtores vão acrescentar depois

Esta página atribui o campo depois de new com uma linha separada: c.fill = 3;. Uma página posterior — construtores — mostrará outra forma de definir valores iniciais quando o objeto é construído. Fique com o campo simples e a atribuição depois de new aqui. Não invente um método construtor nesta página.
Existem valores padrão para campos que você nunca atribui: um campo int começa em 0. Se você imprimir c.fill antes de qualquer atribuição, o ecrã pode mostrar 0. Esta página ainda ensina a atribuição que você escreve, por isso mantenha c.fill = 3; antes da impressão no demo principal.
Se javac não encontrar o símbolo Cup ao compilar Shelf.java, verifique que Cup.java está ao lado de Shelf.java e que a linha da classe é public class Cup. Se o ecrã mostrar 0 quando você esperava 3, a linha de atribuição pode estar em falta ou correr depois da impressão — coloque c.fill = 3; acima de println(c.fill).

Antes dos construtores

Você pode declarar int fill; dentro de Cup, construir Cup c = new Cup();, atribuir c.fill = 3;, e imprimir c.fill a partir de Shelf. Compile ambos os ficheiros e execute java Shelf. O ecrã mostra 3. Dois objetos podem guardar dois fills diferentes. A próxima página é construtores, onde você começa a definir valores no momento em que new constrói o objeto.

🧠 Teste Seu Conhecimento

Pronto para Começar

Teste Seu Conhecimento

Desafie-se com este questionário interativo e veja o quão bem você entende o tópico

❓
6
Perguntas
🎯
70%
Para Passar
♾️
∞
Tempo
🔄
∞
Tentativas

📝 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