Keyword Protected pada Bahasa Pemrograman C#

Keyword Protected pada Bahasa Pemrograman C#
Photo by Ayrus Hill / Unsplash

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 dan TampilkanNama() bersifat protected, sehingga hanya bisa diakses oleh class Hewan dan class turunannya (Kucing).
  • Dalam Main(), kita tidak bisa langsung mengakses kucing1.nama atau kucing1.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 modifier protected.
  • Hanya class Hewan dan subclass-nya yang bisa mengakses nama.

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() bersifat protected virtual pada superclass Hewan.
  • Subclass Anjing dapat meng-override method ini karena protected 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!

Read more