Access modifier adalah “penjaga pintu” yang mengatur siapa boleh mengakses bagian-bagian kelas seperti field, method, atau constructor di C#. Mereka penting dalam OOP untuk menjaga data aman dan program terstruktur.
Bayangkan kelas seperti rumah: public seperti pintu depan terbuka untuk semua, private seperti kamar pribadi hanya untuk pemilik.
Jenis Access Modifier
C# punya enam access modifier utama: public, private, protected, internal, protected internal, dan private protected.
| Modifier | Akses dari Mana? |
| public | Mana saja (seluruh program) |
| private | Hanya dalam kelas itu sendiri |
| protected | Kelas sendiri + kelas turunan |
| internal | Dalam assembly (proyek) yang sama |
| protected internal | Assembly sama atau kelas turunan di mana saja |
| private protected | Kelas sendiri + turunan di assembly sama |
Default untuk member kelas adalah private, sedangkan untuk kelas top-level adalah internal.
Analogi Dunia Sekolah
Supaya mudah dipahami, perhatikan analogi berikut:
| Access Modifier | Analogi di Sekolah |
|---|---|
public |
Semua warga sekolah boleh tahu |
private |
Rahasia pribadi siswa |
protected |
Hanya keluarga |
internal |
Hanya satu sekolah |
protected internal |
Satu yayasan |
Public: Terbuka untuk Semua
Public memungkinkan akses dari mana saja, cocok untuk method atau field yang harus digunakan luas.
Contoh Sederhana (Siswa):
using System;
class Siswa {
public string nama = "Andi"; // Bisa diakses dari mana saja
public void Tampilkan() {
Console.WriteLine("Nama: " + nama);
}
}
class Program {
static void Main() {
Siswa s = new Siswa();
Console.WriteLine(s.nama); // OK!
s.Tampilkan(); // Output: Nama: Andi
}
}
Ini seperti nama siswa di papan kelas, semua bisa lihat.
Private: Rahasia Class
Private hanya bisa diakses dalam kelasnya sendiri, bagus untuk data sensitif seperti password.
Contoh (Bank):
class Rekening {
private double saldo = 1000000; // Hanya Rekening yang bisa ubah langsung
public void Setor(double jumlah) {
saldo += jumlah; // Akses saldo di sini OK
}
public double LihatSaldo() {
return saldo;
}
}
class Program {
static void Main() {
Rekening r = new Rekening();
// r.saldo = 500000; // ERROR! Private
r.Setor(500000);
Console.WriteLine(r.LihatSaldo()); // Output: 1500000
}
}
Analogi: Saldo seperti isi dompet, hanya pemilik yang pegang.
Protected: Warisan Kelas
Protected bisa diakses di kelas sendiri dan anak kelasnya (inheritance), berguna saat turunan butuh akses data induk.
Contoh (Kendaraan -> Motor):
class Kendaraan {
protected string mesin = "V2";
}
class Motor : Kendaraan {
public void Info() {
Console.WriteLine("Mesin: " + mesin); // OK, protected
}
}
class Program {
static void Main() {
Motor m = new Motor();
m.Info(); // Output: Mesin: V2
// Console.WriteLine(m.mesin); // ERROR! Diluar kelas turunan
}
}
Seperti resep keluarga, anak waris bisa pakai tapi orang luar tidak.
Internal: Batas Proyek
Internal hanya dalam satu assembly (proyek .exe atau .dll yang sama).
Contoh (Hitung dalam Proyek):
internal class Kalkulator {
internal int Tambah(int a, int b) {
return a + b;
}
}
class Program {
static void Main() {
Kalkulator k = new Kalkulator();
Console.WriteLine(k.Tambah(5, 3));
}
}
Jika proyek lain, tidak bisa akses. Analogi: Hanya karyawan kantor yang boleh pakai alat kantor.
Protected Internal & Private Protected
Protected internal: Assembly sama ATAU turunan di mana saja.
Private protected: Turunan HANYA di assembly sama (C# 7.2+).
Contoh Singkat Private Protected:
class Induk {
private protected int rahasia = 42;
}
class Anak : Induk {
public void Tampil() {
Console.WriteLine(rahasia);
}
}
Ini seperti rahasia keluarga tapi hanya cabang di kota yang sama.
Latihan untuk Siswa SMK
- Buat Kelas Hewan dengan field protected umur, method public BertambahUmur(). Buat kelas turunan Kucing, tampilkan umur dari Kucing. Coba akses umur langsung dari Main – apa errornya?
- Simulasi Toko: Kelas Produk private hargaBeli, public hargaJual. Method internal hitungUntung(). Test di Main dan kelas lain. Perbandingan: Ubah contoh public jadi private, lihat apa yang error dan kenapa.
- Project Mini: Buat sistem perpustakaan dengan Buku (internal), Siswa (public), dan Peminjaman (protected untuk turunan). Compile dan test akses.
Coba jalankan di Visual Studio atau online compiler. Jika terjadi error, maka di situlah ada pembelajarnya.(*)
















