Keyword Protected pada Bahasa Pemrograman C#
Dalam C#, keyword protected digunakan untuk mengontrol aksesibilitas anggota dalam sebuah class. Anggota yang dideklarasikan dengan protected hanya bisa diakses oleh class itu sendiri dan class turunannya (subclass).
Artikel ini akan membahas apa itu protected dalam C#, bagaimana cara menggunakannya, serta contoh implementasinya dalam berbagai skenario pemrograman.
1. Apa Itu Keyword protected dalam C#?
Secara default, anggota class dalam C# bisa memiliki beberapa level aksesibilitas, seperti public, private, protected, dan internal. Keyword protected memungkinkan suatu anggota class untuk diakses oleh class turunan tetapi tidak dari luar class tersebut.
Ciri-Ciri Keyword protected
✅ Hanya bisa diakses dalam class yang sama atau subclass.
✅ Tidak bisa diakses dari luar class jika tidak ada inheritance.
✅ Digunakan untuk melindungi data dari akses langsung tetapi tetap tersedia bagi subclass.
2. Contoh Penggunaan protected
2.1 Contoh Dasar protected dalam Pewarisan
using System;
class Hewan {
protected string nama;
public Hewan(string nama) {
this.nama = nama;
}
protected void TampilkanNama() {
Console.WriteLine("Nama Hewan: " + nama);
}
}
class Kucing : Hewan {
public Kucing(string nama) : base(nama) {}
public void Perkenalkan() {
TampilkanNama();
}
}
class Program {
static void Main() {
Kucing kucing1 = new Kucing("Milo");
kucing1.Perkenalkan();
}
}
Output:
Nama Hewan: Milo
Penjelasan:
namadanTampilkanNama()bersifatprotected, sehingga hanya bisa diakses oleh classHewandan class turunannya (Kucing).- Dalam
Main(), kita tidak bisa langsung mengakseskucing1.namaataukucing1.TampilkanNama()dari luar class.
2.2 Percobaan Mengakses protected dari Luar Subclass
Coba kode berikut:
class Program {
static void Main() {
Hewan hewan1 = new Hewan("Harimau");
Console.WriteLine(hewan1.nama); // ERROR: 'nama' is inaccessible due to its protection level
}
}
Penjelasan:
- Variabel
namatidak bisa diakses langsung karena memiliki modifierprotected. - Hanya class
Hewandan subclass-nya yang bisa mengaksesnama.
3. Perbedaan protected, private, dan public
| Modifier | Dapat Diakses oleh Class Itu Sendiri | Dapat Diakses oleh Subclass | Dapat Diakses dari Luar Class |
|---|---|---|---|
private |
✅ Ya | ❌ Tidak | ❌ Tidak |
protected |
✅ Ya | ✅ Ya | ❌ Tidak |
public |
✅ Ya | ✅ Ya | ✅ Ya |
Kesimpulan:
private→ Hanya bisa diakses oleh class itu sendiri.protected→ Bisa diakses oleh class sendiri dan class turunannya.public→ Bisa diakses dari mana saja.
4. Menggunakan protected dengan Method Overriding
Kita bisa menggunakan protected untuk method yang ingin di-override dalam subclass.
class Hewan {
protected virtual void Suara() {
Console.WriteLine("Hewan berbunyi.");
}
}
class Anjing : Hewan {
protected override void Suara() {
Console.WriteLine("Guk! Guk!");
}
public void PerkenalkanSuara() {
Suara();
}
}
class Program {
static void Main() {
Anjing anjing1 = new Anjing();
anjing1.PerkenalkanSuara();
}
}
Output:
Guk! Guk!
Penjelasan:
Suara()bersifatprotected virtualpada superclassHewan.- Subclass
Anjingdapat meng-override method ini karenaprotectedmemungkinkan akses dalam subclass.
5. Kapan Harus Menggunakan protected?
✅ Gunakan protected jika:
- Ingin melindungi anggota class dari akses luar tetapi tetap ingin memberikannya ke subclass.
- Ingin memastikan hanya class turunan yang bisa mengakses method atau variabel tertentu.
- Menggunakan inheritance sebagai bagian dari desain program.
❌ Jangan gunakan protected jika:
- Data harus tetap tertutup sepenuhnya dari class lain (gunakan
private). - Data harus bisa diakses dari luar class atau instance lain (gunakan
public).
6. Kesimpulan
protectedadalah modifier akses yang memungkinkan subclass mengakses anggota class induknya.- Berguna dalam inheritance untuk menjaga enkapsulasi tetapi tetap memberikan akses ke subclass.
- Tidak bisa diakses dari luar class atau instance lain.
- Dapat digunakan dalam method overriding untuk fleksibilitas lebih lanjut dalam subclass.
Dengan memahami Keyword protected dalam C#, Anda bisa membuat desain class yang lebih aman, fleksibel, dan sesuai dengan prinsip OOP!