Erişim Belirleyiciler

Bazı durumlarda nesnelerin özellikleri ve sınıflar içinde yer alan metotların kullanımı özelleştirilmek istenebilir. Yani her özelliğe erişim durumu aynı olmayabilir. Bazı özelliklerin ve metotların alt sınıflarda veya diğer projelerde kullanılıp kullanılmayacağı ayarlanabilmektedir. İşte bu işlemleri gerçekleştirmemizi sağlayan yapı erişim belirleyicileridir. Aynı zamanda erişim belirleyicileri sayesinde sınıflara erişebilme durumu da ayarlanabilmektedir.

C#. Net içinde temel olarak kullanabileceğimiz 4 adet erişim belirleyicisi bulunmaktadır. Bu erişim belirleyicilerin birlikte kullanımı da söz konusudur. Örneğin protected ve internal erişim belirleyicilerin beraber kullanımını ifade protected internal erişim belirleyicisidir. Benzer şekilde private protected erişim belirleyicisi de private ve protected erişim belirleyicilerin birlikte kullanımı olacak şekilde ayarlanmıştır.

Public erişim belirleyicisini kullandığımızda, kısıtlama olmayan yani sınıf içi, sınıf dışı ve farklı projeler olmak üzere her yerden erişilebilir olmasını sağlamaktayız. Tabi public olarak tanımlanan değişkenin ya da metodun farklı projelerde (exe dosyalarında) kullanılabilmesi için başvuru olarak eklenmesi gerekmektedir.

Public olarak tanımlanan bir özelliğe kendi sınıfı içinden de ulaşılabilmektedir. Bu durumu basit bir metot tanımlayarak gösterebiliriz.

Erişim belirleyicileri içinde en kısıtlayıcı olan erişim belirleyicisi private erişim belirleyicisidir. Sadece tanımlandığı sınıf içinden erişilmesine izin vermektedir. Bununla birlikte bir özellik veya metot yazılırken herhangi bir erişim belirleyici bildirilmediği takdirde program o özellik veya metodu varsayılan olarak Private algılamaktadır. Ancak genellikle bu belirleyicinin yazılması tavsiye edilmektedir.

Private erişim belirleyicisi kullanılarak oluşturulan bir özelliğe farklı sınıflardan erişilemeyeceğini söyledik. Public erişim belirleyicisinde olduğu gibi farklı bir sınıf içinde yazmak istersek çalıştırma aşamasına geçmeden kod editöründe kırmızı bir alt çizgi ile program bizi uyarmaktadır.

Protected erişim belirleyicisi kullanılarak tanımlanan özellik ve metotlara aynı sınıf içinden erişilebilmektedir. Ancak farklı sınıflardan bu özellik ve metotlara erişim engellenmektedir. Sadece bu yönüyle Protected erişim belirleyicisini değerlendirecek olursak Private erişim belirleyicisinden bir farkı olmadığı düşünülebilir. Bu durumda kalıtım kavramı devreye girmektedir. Yani Protected erişim belirleyicisinin private erişim belirleyicisinden farkını anlayabilmek için kalıtım kavramını kullanacağımız bir uygulama geliştirmemiz gerekmektedir.

Protected olarak tanımlanan özellik ve metotlara o sınıftan türetilmiş sınıflardan da erişebilmek mümkündür. Private erişim belirleyicisinde böyle bir durum söz konusu değildir.

Tek bir proje üzerinde çalışırken internal erişim belirleyicisi ile public erişim belirleyicisi arasında bir fark bulunmamaktadır. Internal erişim belirleyicisi kullanılarak tanımlanan özellik ve metotlara aynı sınıftan, türetilen sınıflardan ve farklı sınıflardan erişim mümkündür. Buradaki fark iki projenin tek bir çözüm gezgini üzerinde çalışırken ortaya çıkmaktadır.

Protected internal erişim belirleyicisi, protected erişim belirleyicisiyle internal erişim belirleyicisinin OR (veya) operatörüyle birleştirilmesi gibi çalışmaktadır. Protected internal erişim belirleyicisiyle tanımlanan özellik veya metoda tanımlandığı sınıftan, türetildiği sınıflardan veya farklı sınıflardan tek proje içerisinde erişim mümkündür. Bu erişim belirleyicisi kullanılarak tanımlanan özelliğe farklı bir projede bulunan sınıf içinden erişilmesine izin verilmemektedir. Ancak farklı bir projede bulunan türetilmiş bir sınıf içinde erişim mümkündür.