Field vs Property
Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan C# di Coddy. Pelajaran 6 dari 70.
Field adalah variabel yang dideklarasikan langsung di dalam class. Property adalah anggota yang menyediakan akses terkontrol ke field menggunakan accessor get dan set.
Field menyimpan data secara langsung
public class Person
{
// Field: penyimpanan variabel secara langsung
private string name;
private int age;
}property menyediakan akses terkontrol melalui get dan set
public class Person
{
private string name;
// property dengan field penyimpan
public string Name
{
get { return name; }
set { name = value; }
}
}Properti otomatis (bentuk singkat)
public class Person
{
// property yang diimplementasikan otomatis
public string Name { get; set; }
public int Age { get; set; }
}Property dapat mencakup logika validasi
public class Person
{
private int age;
public int Age
{
get { return age; }
set
{
if (value >= 0 && value <= 120)
age = value;
}
}
}Properti hanya-baca (hanya accessor get)
public class Circle
{
private double radius;
public double Radius
{
get { return radius; }
}
// property hasil perhitungan yang hanya bisa dibaca
public double Area
{
get { return Math.PI * radius * radius; }
}
}Field biasanya bersifat private dan diakses melalui property. Property memungkinkan kamu menambahkan logika, validasi, dan kontrol atas cara data diakses atau diubah. Property yang diimplementasikan otomatis praktis digunakan saat kamu tidak memerlukan logika tambahan.
Tantangan
SedangBuat class BankAccount yang menunjukkan perbedaan antara field dan property:
- Field
balanceprivat untuk menyimpan saldo akun - Property
AccountNameyang diimplementasikan secara otomatis - Property
Balancehanya-baca yang mengembalikan nilai field saldo - Method
DepositdanWithdrawyang mengubah field privat
Coba sendiri
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}");
}
}Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Pemrograman Berorientasi Objek
1Dasar-Dasar OOP
File EksternalNamespace & DirektifPengantar class & objectKata Kunci 'this'Method dan ParameterField vs PropertyKonstruktorInisialisasi objectRingkasan: Kalkulator Sederhana4Pewarisan
Sintaks Dasar Pewarisan (:)Kata Kunci 'base'Kata Kunci Virtual & OverrideClass SealedBase Class 'object'Rangkuman: Hierarki Karyawan7Fitur Lanjutan
Overloading OperatorIndexer (this[])Penimpaan ToString()Extension methodRingkasan: Custom list2Property & Anggota Statis
Property yang Diimplementasikan OtomatisProperty Hanya Baca dan Hanya TulisField dan method StatisClass StatisAnggota Berbentuk Ekspresi5Polimorfisme & Antarmuka
Polimorfisme saat kompilasi vs runtimeAntarmuka vs kelas abstrakBeberapa antarmukaAntarmuka eksplisitUpcasting & DowncastingRingkasan, Kalkulator Bentuk8Konsep OOP Lanjutan
Komposisi daripada PewarisanGenerics (class dan method)Delegate dan EventAtribut dan ReflectionIDisposable dan Pernyataan usingDasar-Dasar Dependency Injection11Pola Desain Bagian 2
Pola PerintahPola AdapterPola DecoratorPola Template MethodPola StatePola CompositeLatihan sendiri: Compiler C# online