Menu
Coddy logo textTech

Campos vs Propriedades

Parte da seção Programação Orientada a Objetos do Journey de C# da Coddy — lição 6 de 70.

Campos são variáveis declaradas diretamente em uma classe. Propriedades são membros que fornecem acesso controlado a campos usando acessores get e set.

Campos armazenam dados diretamente

public class Person
{
    // Campos - armazenamento direto de variáveis
    private string name;
    private int age;
}

Propriedades fornecem acesso controlado com get e set

public class Person
{
    private string name;
    
    // Propriedade com campo de suporte
    public string Name
    {
        get { return name; }
        set { name = value; }
    }
}

Propriedades autoimplementadas (forma curta)

public class Person
{
    // Propriedade autoimplementada
    public string Name { get; set; }
    public int Age { get; set; }
}

Propriedades podem incluir lógica de validação

public class Person
{
    private int age;
    
    public int Age
    {
        get { return age; }
        set 
        { 
            if (value >= 0 && value <= 120)
                age = value;
        }
    }
}

Propriedade somente leitura (apenas acessor get)

public class Circle
{
    private double radius;
    
    public double Radius
    {
        get { return radius; }
    }
    
    // Propriedade calculada somente leitura
    public double Area
    {
        get { return Math.PI * radius * radius; }
    }
}

Campos são tipicamente privados e acessados por meio de propriedades. As propriedades permitem adicionar lógica, validação e controle sobre como os dados são acessados ou modificados. Propriedades autoimplementadas são convenientes quando você não precisa de lógica extra.

challenge icon

Desafio

Médio

Crie uma classe BankAccount que demonstre a diferença entre campos e propriedades:

  • Um campo privado balance para armazenar o saldo da conta
  • Uma propriedade autoimplementada AccountName
  • Uma propriedade somente leitura Balance que retorna o campo balance
  • Métodos Deposit e Withdraw que modificam o campo privado

Folha de consulta

Campos são variáveis declaradas diretamente em uma classe, enquanto propriedades fornecem acesso controlado aos campos usando acessores get e set.

Campos armazenam dados diretamente:

public class Person
{
    private string name;
    private int age;
}

Propriedades fornecem acesso controlado com get e set:

public class Person
{
    private string name;
    
    public string Name
    {
        get { return name; }
        set { name = value; }
    }
}

Propriedades autoimplementadas (forma abreviada):

public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
}

Propriedades com lógica de validação:

public int Age
{
    get { return age; }
    set 
    { 
        if (value >= 0 && value <= 120)
            age = value;
    }
}

Propriedade somente leitura (apenas acessor get):

public double Area
{
    get { return Math.PI * radius * radius; }
}

Campos são tipicamente privados e acessados por meio de propriedades. Propriedades permitem que você adicione lógica, validação e controle sobre como os dados são acessados ou modificados.

Experimente você mesmo

using System;

class Program
{
    static void Main()
    {
        string accountName = Console.ReadLine();
        decimal initialBalance = decimal.Parse(Console.ReadLine());
        decimal depositAmount = decimal.Parse(Console.ReadLine());
        
        BankAccount account = new BankAccount(accountName, initialBalance);
        
        Console.WriteLine($"Account: {account.AccountName}");
        Console.WriteLine($"Initial Balance: ${account.Balance}");
        
        account.Deposit(depositAmount);
        Console.WriteLine($"After Deposit: ${account.Balance}");
        
        string result = account.Withdraw(2000);
        Console.WriteLine($"Withdraw attempt: {result}");
        Console.WriteLine($"Final Balance: ${account.Balance}");
    }
}
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Programação Orientada a Objetos