Access Modifier (Erişim Nitelikleri)
Oluşturduğunuz uygulamaların güvenliğini artırmak için, kullandığınız sınıfların erişilebilirliğini kısıtlamanız gerekecektir. Sınıflarda olduğu gibi sınıf içinde bulunan elemanların da erişilebilirliğini uygulama içinde gerektiği gibi kısıtlamalar, yani bu elemanları da uygulama dışında erişime kapatırsanız, daha somut bir güvenlik elde edebilirsiniz.
Erişim nitelikleri, oluşturduğunuz sınıf veya sınıf içindeki elemanların erişim seviyelerini belirlemek için kullanılan anahtar kelimeler grubuna, toplu olarak verilen isimdir.
Bu anahtar kelimeler public, internal, private ve protected olmak üzere dörde ayrılırlar.
Sınıf (class) ve Yapı (struct) için:
Başka sınıf veya yapılar içinde oluşturulmamış sınıf veya yapılar, public veya internal olabilirler. public olarak belirtilen bir tür’e her yerden erişim tamamen açıktır. internal olarak belirtilen bir tür ise sadece aynı programı paylaştığı diğer türler tarafından erişilebilir. Oluşturduğunuz sınıf veya yapı’ların public olmasını açık bir şekilde belirtmezseniz, derleyici tarafından internal olarak belirtilirler. Kullandığınız erişim niteleyicileri, oluşturduğunuz sınıf veya yapıların kendi elemanlara erişim haklarını hiçbir zaman kısıtlamaz.
Sınıf veya Yapı içinde bulunan elemanlar için:
Sınıf veya Yapı içinde bulunan elemanlar için beş değişik erişilebilirlik seviyesi vardır. Sınıflar ve yapılar gibi public veya internal olabilirler. Buna ek olarak, protected olarak nitelendirilen bir eleman, sadece bulunduğu sınıftan türeyen diğer türler içinde erişime açıktırlar. protected ve internal kelimeleri kullanarak oluşturulan protected internal erişim seviyesine sahip olan bir eleman ise, bulunduğu sınıftan türeyen diğer türler içinde veya bulundukları uygulama içinde erişime açıktır. Son olarak private olarak belirtilen bir tür ise sadece bulunduğu sınıf veya yapı içinde erişime açıktır, başka heryerden bu türe erişim kapalıdır.
Bir örnek verecek olursak
|
// public class:
public class Araba
{
// protected method:
protected void Motor() { }
// private field:
private int m_tekerlek = 4;
// protected internal property:
protected internal int Tekerlekler
{
get { return m_tekerlek; }
}
}
|