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:
nama
danTampilkanNama()
bersifatprotected
, sehingga hanya bisa diakses oleh classHewan
dan class turunannya (Kucing
).- Dalam
Main()
, kita tidak bisa langsung mengakseskucing1.nama
ataukucing1.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
nama
tidak bisa diakses langsung karena memiliki modifierprotected
. - Hanya class
Hewan
dan 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 virtual
pada superclassHewan
.- Subclass
Anjing
dapat meng-override method ini karenaprotected
memungkinkan 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
protected
adalah 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!