Menu
Coddy logo textTech

Pola a właściwości

Część sekcji Programowanie obiektowe ścieżki C# w Coddy. Lekcja 6 z 70.

Pola to zmienne zadeklarowane bezpośrednio w klasie. Właściwości to składowe zapewniające kontrolowany dostęp do pól za pomocą akcesorów get i set.

Pola przechowują dane bezpośrednio

public class Person
{
    // Pola — bezpośrednie przechowywanie zmiennych
    private string name;
    private int age;
}

Właściwości zapewniają kontrolowany dostęp za pomocą get i set

public class Person
{
    private string name;
    
    // Właściwość z polem bazowym
    public string Name
    {
        get { return name; }
        set { name = value; }
    }
}

Właściwości implementowane automatycznie (skrócony zapis)

public class Person
{
    // Właściwość implementowana automatycznie
    public string Name { get; set; }
    public int Age { get; set; }
}

Właściwości mogą zawierać logikę walidacji

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

Właściwość tylko do odczytu (tylko akcesor get)

public class Circle
{
    private double radius;
    
    public double Radius
    {
        get { return radius; }
    }
    
    // Obliczana właściwość tylko do odczytu
    public double Area
    {
        get { return Math.PI * radius * radius; }
    }
}

Pola są zazwyczaj prywatne i dostęp uzyskuje się do nich za pośrednictwem właściwości. Właściwości pozwalają dodawać logikę i walidację oraz kontrolować sposób dostępu do danych lub ich modyfikowania. Właściwości implementowane automatycznie są wygodne, gdy nie potrzebujesz dodatkowej logiki.

challenge icon

Wyzwanie

Średni

Utwórz klasę BankAccount, która pokazuje różnicę między polami a właściwościami:

  • Prywatne pole balance do przechowywania salda konta
  • Automatycznie implementowana właściwość AccountName
  • Właściwość tylko do odczytu Balance, która zwraca wartość pola balance
  • Metody Deposit i Withdraw, które modyfikują prywatne pole

Spróbuj swoich sił

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 iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Programowanie obiektowe

Poćwicz samodzielnie: Kompilator C# online