Modifier akses hanya membatasi kode yang berada di luar kelas, tidak ada pemisahan akses di dalam kelas.
Seperti yang sudah kita pelajari sebelumnya, semua anggota dapat diakses dengan bebas dari dalam kelas.
Selanjutnya, kita akan belajar cara mengakses anggota dari luar kelas.
Untuk mengakses anggota instans publik dari luar kelas, kamu wajib menggunakan sintaks titik namaVariabelObjek.namaAnggota.
class Program
{
static void Main(string[] args)
{
Worker worker = new Worker(); // Membuat objek
int hours = worker.GetHours(); // Mengakses fungsi publik melalui objek
worker.hours = 12; // Memberi nilai variabel publik lewat objek
Console.WriteLine(worker.hours); // Baca langsung seperti variabel biasa
}
}
class Worker
{
int age;
private double savings;
public int hours;
void ReadSavings()
{
Console.WriteLine(savings);
}
public int GetHours()
{
return hours;
}
}Code language: C# (cs)
Metode GetHours milik Worker ditandai public, sehingga bisa dibaca dan diubah dari luar.
Metode Main di kelas Program membuat objek Worker bernama worker.
Kamu bisa mengakses anggota publik menggunakan nama objek worker. Nama objek mirip dengan penunjuk, menyimpan referensi (alamat memori), lalu gunakan nama objek diikuti titik . untuk mengakses anggota publik.

Bentuk akses anggota instans dari luar: variabelObjek.fieldPublik / metodePublik().
Anggota bertanda private tidak dapat diakses dengan sintaks titik dari luar kelas.

Jika kamu mencoba mengakses anggota privat (field, fungsi) di luar kelas, kode akan langsung muncul error.
Contoh yang salah
class Program
{
static void Main(string[] args)
{
Worker worker = new Worker();
int hours = worker.GetHours();
worker.hours = 12;
Console.WriteLine(worker.hours);
worker.ReadSavings();
worker.age = 20;
worker.savings = 1000000000.0;
}
}
class Worker
{
int age;
private double savings;
public int hours;
void ReadSavings()
{
Console.WriteLine(savings);
}
public int GetHours()
{
return hours;
}
}Code language: C# (cs)
Mari lihat contoh lainnya
class Rectangle
{
// Field instans publik: panjang Length, lebar Width
public int Length, Width;
// Metode instans: menghitung dan mengembalikan luas persegi panjang
public int GetArea()
{
return Length * Width;
}
}
class Program
{
static void Main()
{
// Membuat dua instans persegi panjang yang terpisah
Rectangle rect1 = new Rectangle();
Rectangle rect2 = new Rectangle();
// Isi nilai panjang dan lebar masing-masing, data saling terpisah
rect1.Length = 10; rect1.Width = 5;
rect2.Length = 8; rect2.Width = 7;
// Baca panjang lebar, panggil metode untuk cetak luas
Console.WriteLine("Persegi panjang 1: Panjang {0}, Lebar {1}, Luas {2}", rect1.Length, rect1.Width, rect1.GetArea());
Console.WriteLine("Persegi panjang 2: Panjang {0}, Lebar {1}, Luas {2}", rect2.Length, rect2.Width, rect2.GetArea());
}
}Code language: C# (cs)
Ini adalah kelas persegi panjang. Terdapat dua field publik Length dan Width untuk menyimpan panjang dan lebar, serta fungsi GetArea yang mengembalikan luas persegi panjang.
Semua anggota ini bersifat publik.
Hasil eksekusi
Persegi panjang 1: Panjang 10, Lebar 5, Luas 50
Persegi panjang 2: Panjang 8, Lebar 7, Luas 56
Cara penyimpanan di memori seperti berikut

Kedua objek disimpan secara terpisah. Masing-masing memiliki Length dan Width milik sendiri dan tidak saling mempengaruhi.
Mengakses anggota dari luar kelas