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#.