dilindungi (Referensi C#)

Kata kunci protected adalah pengubah akses anggota.

Catatan

Halaman ini mencakup akses protected. Kata kunci protected juga merupakan bagian dari pengubah akses protected internal dan private protected.

Anggota yang dilindungi bisa diakses dalam kelasnya dan oleh instans kelas turunan.

Untuk perbandingan protected dengan pengubah akses lainnya, lihat Tingkat Aksesibilitas.

Contoh 1

Anggota kelas dasar yang dilindungi bisa diakses di kelas turunan hanya jika akses terjadi melalui jenis kelas turunan. Misalnya, pertimbangkan segmen kode berikut:

class A
{
    protected int x = 123;
}

class B : A
{
    static void Main()
    {
        var a = new A();
        var b = new B();

        // Error CS1540, because x can only be accessed by
        // classes derived from A.
        // a.x = 10;

        // OK, because this class derives from A.
        b.x = 10;
    }
}

Pernyataan a.x = 10 menghasilkan kesalahan karena dibuat dalam metode statis Main, dan bukan turunan dari kelas B.

Anggota struct tidak dapat dilindungi karena struct tidak dapat diwariskan.

Contoh 2

Dalam contoh ini, kelas DerivedPoint turunan dari Point. Oleh karena itu, Anda bisa mengakses anggota kelas dasar yang dilindungi langsung dari kelas turunan.

class Point
{
    protected int x;
    protected int y;
}

class DerivedPoint: Point
{
    static void Main()
    {
        var dpoint = new DerivedPoint();

        // Direct access to protected members.
        dpoint.x = 10;
        dpoint.y = 15;
        Console.WriteLine($"x = {dpoint.x}, y = {dpoint.y}");
    }
}
// Output: x = 10, y = 15

Jika Anda mengubah tingkat akses x dan y menjadi privat, pengkompilasi akan mengeluarkan pesan kesalahan:

'Point.y' is inaccessible due to its protection level.

'Point.x' is inaccessible due to its protection level.

Spesifikasi bahasa C#

Untuk informasi selengkapnya, lihat Aksesibilitas yang dinyatakan di Spesifikasi Bahasa C#. Spesifikasi bahasa adalah sumber definitif untuk sintaks dan penggunaan C#.

Lihat juga