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.
Wyzwanie
ŚredniUtwórz klasę BankAccount, która pokazuje różnicę między polami a właściwościami:
- Prywatne pole
balancedo przechowywania salda konta - Automatycznie implementowana właściwość
AccountName - Właściwość tylko do odczytu
Balance, która zwraca wartość pola balance - Metody
DepositiWithdraw, 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}");
}
}Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Programowanie obiektowe
1Podstawy programowania obiektowego
Pliki zewnętrznePrzestrzenie nazw i dyrektywyWprowadzenie do klas i obiektówSłowo kluczowe „this”Metody i parametryPola a właściwościKonstruktoryInicjalizatory obiektówPodsumowanie — prosty kalkulator4Dziedziczenie
Podstawowa składnia dziedziczenia (:)Słowo kluczowe 'base'Słowa kluczowe virtual i overrideKlasy sealedBazowa klasa 'object'Powtórzenie – hierarchia pracowników7Zaawansowane funkcje
Przeciążanie operatorówIndeksery (this[])Nadpisywanie ToString()Metody rozszerzającePodsumowanie – własna lista2Właściwości i składowe statyczne
Właściwości automatyczneWłaściwości tylko do odczytu i zapisuPola i metody statyczneKlasy statyczneSkładowe z ciałem wyrażeniowym5Polimorfizm i interfejsy
Polimorfizm czasu kompilacji a czasu wykonaniaInterfejs a klasa abstrakcyjnaWiele interfejsówJawne implementowanie interfejsówRzutowanie w górę i w dółPowtórka — kalkulator kształtów8Zaawansowane koncepcje OOP
Kompozycja zamiast dziedziczeniaTypy generyczne (klasy i metody)Delegaty i zdarzeniaAtrybuty i refleksjaIDisposable i instrukcja usingPodstawy wstrzykiwania zależności11Wzorce projektowe, część 2
Wzorzec poleceniaWzorzec adapteraWzorzec dekoratoraWzorzec metody szablonowejWzorzec stanuWzorzec kompozytu3Architektura klas
Dane instancji a dane statyczneSłowa kluczowe 'readonly' i 'const'Pola zapasowePowtórzenie — menedżer kont bankowych6Hermetyzacja
Modyfikatory dostępuWłaściwości w hermetyzacjiImplementacja ukrywania danychWzorce niezmiennościPowtórka — dane studentów9Argumenty zmiennej liczby
Słowo kluczowe „params”Parametry opcjonalneArgumenty nazwanePrzeciążanie metodPoćwicz samodzielnie: Kompilator C# online