Carregando...

Campos

Coloque um campo int chamado fill dentro de uma classe Cup. Em Pine, mantenha Main e construa um cup com Cup c = new Cup();, guarde um número com c.fill = 3;, depois escreva esse campo com Console.WriteLine(c.fill);. Mantenha os dois tipos no mesmo arquivo de ensino para dotnet run continuar simples. Execute com dotnet run. A tela deve mostrar uma linha: 3. O campo guarda dados naquele objeto. Você o alcança pela variável que nomeia o objeto. Guardar e ler esse valor no objeto é o que esta página ensina. Mantenha a classe pública inicial chamada Pine.

Um lugar para dados no objeto

Na página de objetos, beep só escrevia. Não guardava um número para depois. Um campo é um nome declarado dentro da classe onde cada objeto pode guardar o próprio valor. Depois que new constrói o objeto, você atribui o campo pela variável do objeto, depois pode escrevê-lo na tela.
Abra o arquivo Pine. O nome da classe inicial permanece Pine. Esta página não renomeia o iniciador. Apague qualquer resto c.beep(); se essa chamada Chip ainda for tudo o que você tem em Main. Apague qualquer resto de classe Chip. Apague qualquer linha ReadLine. O arquivo que você guarda não espera digitação.
Fora das chaves de Pine — ainda no mesmo arquivo — escreva public class Cup. Dentro das chaves da classe, escreva uma linha de campo: int fill;. Não há método nesta primeira caixa. Não há Main em Cup nesta página. Salve o arquivo antes de executar.
O primeiro programa em caixa mostra Cup sozinho para você ler o campo com clareza. O segundo programa em caixa é a forma guardada com Pine definindo e escrevendo fill.

Cup with fill field

csharp
using System;

public class Cup
{
    int fill;
}

Pine atribui fill, depois escreve

Pine mantém public static void Main(). Dentro de Main, escreva três linhas em ordem: Cup c = new Cup();, depois c.fill = 3;, depois Console.WriteLine(c.fill);. A primeira linha constrói o objeto. A segunda guarda 3 no fill daquele objeto. A terceira escreve o número guardado. Você não chama c.beep(); nesta página. Essa era a lição de objetos.

Pine sets and prints fill

csharp
using System;

public class Pine
{
    public static void Main()
    {
        Cup c = new Cup();
        c.fill = 3;
        Console.WriteLine(c.fill);
    }
}

public class Cup
{
    int fill;
}

Leia o arquivo guardado de cima. using System; prepara nomes curtos. public class Pine é o iniciador. public static void Main() é onde o runtime começa. new Cup() constrói um objeto e o guarda em c. A atribuição c.fill = 3 escreve 3 no campo daquele objeto. WriteLine(c.fill) lê o mesmo campo e escreve 3. O número na tela é o valor guardado no objeto, não uma impressão fixa de uma string como "ok".
Execute com dotnet run. O programa escreve uma linha e para. Não espera você digitar. Se dotnet run esperar, ReadLine ainda está no arquivo. Apague essa linha e mantenha as três linhas acima em Pine, com o campo fill em Cup. A tela mostra 3. Se a tela mostrar ok, uma chamada c.beep(); restante ainda está rodando. Se a tela mostrar as letras Cup, uma linha de escrita tem aspas: Console.WriteLine("Cup");. Você não reinstala o SDK .NET por uma tela que mostra a linha errada.
Percorra a execução mais uma vez em ordem. C# começa em Pine.Main. A primeira instrução constrói um objeto com new Cup() e o guarda em c. A segunda guarda 3 em c.fill. A terceira escreve esse campo. Depois Main termina. O nome do campo fill é declarado uma vez na classe. Cada objeto construído a partir de Cup recebe o próprio espaço para esse nome. Quando você escreve c.fill, nomeia primeiro o objeto, depois o espaço naquele 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 sempre passa por um objeto nesta página.

📊 class object field

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

Escrever Cup.fill = 3; sem um objeto não combina com esta forma iniciante. 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 não deixa nome para fill. Mantenha Cup c = new Cup(); depois c.fill = 3;.
Uma demo de objetos restante pode confundir Main. Um arquivo que ainda chama c.beep(); com uma classe Chip é a lição anterior. Para esta página mantenha Cup e Pine e o campo fill. Você não precisa de beep aqui.
Se você escrever só Console.WriteLine(c);, a tela não mostrará um 3 limpo. Imprime um texto padrão de objeto. Para ver o número guardado, escreva Console.WriteLine(c.fill);.

Dois cups guardam fills separados

Você pode construir dois objetos a partir de Cup. Cada um tem o próprio fill. Mudar um não muda o outro.
Em Pine, você pode escrever Cup a = new Cup(); e Cup b = new Cup();, depois a.fill = 2; e b.fill = 9;, depois escrever a.fill e b.fill. Após dotnet run, a tela deve mostrar 2 numa linha e 9 na seguinte. Os dois objetos compartilham o texto da classe que declara fill, mas cada objeto guarda o próprio número.
Se as duas escritas mostrarem o mesmo valor quando você queria dois números diferentes, confira que atribuiu os dois campos e que não escreveu Cup b = a;. Essa linha faz b apontar para o mesmo objeto que a, então os dois nomes compartilham 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 esse exercício. Edite Pine com cuidado 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á outro jeito de definir valores iniciais quando o objeto é construído. Fique aqui com o campo simples e a atribuição depois de new. 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ê escrever c.fill antes de qualquer atribuição, a tela pode mostrar 0. Esta página ainda ensina a atribuição que você escreve, então mantenha c.fill = 3; antes da escrita na demo principal.
Não aninhe Cup dentro das chaves de Pine. Nesta página as duas classes ficam como irmãs no arquivo. O campo fica dentro de Cup. Main fica dentro de Pine. Se a compilação não achar Cup ao compilar Pine, confira que public class Cup está no mesmo arquivo. Se a tela mostrar 0 quando você esperava 3, a linha de atribuição pode estar faltando ou rodar depois da escrita — coloque c.fill = 3; acima de Console.WriteLine(c.fill);.

Você pode declarar int fill; dentro de Cup, construir Cup c = new Cup();, atribuir c.fill = 3;, e escrever c.fill a partir de Pine.Main. Execute com dotnet run. A tela mostra 3. Dois objetos podem guardar dois fills diferentes. Pense em fill como um espaço rotulado em cada cup que você constrói com new. Pine continua a porta que você abre com dotnet run. A página seguinte é 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