C Sharp’da Access Modifierlar
Herkese merhaba,
Bu yazıda C Sharp’da Access Modifierler ile ilgili bilgi vermeye çalışacağım.
C Sharp programlama dilinde tanımlanan erişim belirleyiciler aşağıdaki gibidir.
Private: Bir değerin Private olarak belirtilmesi, tanımlanan değişkene sadece kendi Class’ı içinden ulaşılabileceği anlamına gelmektedir. Kesinlikle değiştirilmemesi gereken kodlarda kullanılmaktadır. Bir nesne Private olarak tanımlandığında sadece kendi kod bloğu içerisinden çağrılabilir. Güvenlik nedeniyle dışarıya kesinlikle açmamamız gereken nesnelerde kullanılır. Private ile tanımlanmış olan bir alana sadece tanımlandığı sınıf içerisinden ulaşılabilmektedir.
Public: Bir değerin Public olarak tanımlanması, kod içinde herhangi bir yerden erişilebilir durumda olmasını sağlar. Public erişim belirleyici tipinde kısıtlama yoktur. Public ile tanımladığımız alanlara farklı projeler de dâhil olmak üzere Solution içerisinde her yerden erişilebilmektedir. Bir nesne Public olarak tanımlandığında hiç bir kısıtlaması olmaz. Yani hem kendi kod bloğu üzerinden hem de dışarıdan hatta farklı projeler üzerinden dahi çağırılabilir.
Protected: Kod içinde bir değerin Protected olarak tanımlanması; bulunduğu Class ve o Class üzerinden türetilen sınıflar içinden erişilebilir olduğunu göstermektedir. Protected; Public ve Private erişim belirleyicilerinin birleşimi olarak görülebilmektedir. Bir nesne Protected olarak tanımlandığında yalnızca bulunduğu Class üzerinde ve bu Class‘ı miras alan (bu Class’tan türetilmiş) Class‘lar üzerinden çağırılabilir. Protected ile tanımlanan alanlara sadece tanımlandığı sınıf içerisinde ya da o sınıfı miras alan (inheritance) sınıf içerisinde ulaşılabilmektedir. Protected; bir anlamda, Public ve Private erişim belirleyicilerinin birleşimi olarak görülebilmektedir.
Internal: Internal olarak tanımlanan değer; aynı program içerisinden erişilebilir fakat farklı program içerisinden erişilemez. Program içerisinde herhangi bir kısıtlaması yoktur. Kendi projesi içerisinde Public, farklı bir projeden/dışarıdan çağırılmak istenildiğinde ise Private özelliklerini taşır. Yani aynı Assembly (dll) üzerinde istediğiniz şekilde kullanabilirsiniz ancak dışarıdan (farklı bir projeden) çağıramazsınız. Internal ile tanımladığımız bir sınıf ya da değişkene aynı Public’de olduğu gibi proje içerisinde ya da Namespace (isim alanı) içerisinde erişebiliyoruz. Internal’ın Public’ten farkı ise tanımladığı yapıya diğer projelerden ulaşım iznini vermemesidir. Internal aynı zamanda bir sınıfın varsayılan belirleyicisidir.
Protected Internal: Protected Internal olarak tanımlanmış değer, tanımlandığı Class ve tanımlanan Class içerisinden türetilen sınıfların içinden erişilebilir durumdadır. Aynı Solution içerisinde fakat farklı bir proje ya da Namespace (isim alanı) içerisinde olan bir sınıf başka bir sınıfı miras almış (Inheritance) ve ilgili alan Protected Internal ile tanımlanmış ise bu alana ulaşabiliriz. Bir nesne Protected Internal olarak tanımlandığında aynı Protected gibi kendi bulunduğu Class üzerinde ve bu Class‘ı miras alan Class‘lar üzerinden çağrılabilir. Artı olarak aynı proje Assembly (dll) üzerinde olmasalar dahi, tanımlandığı Class’tan türetilmiş diğer Class’ların içinden de çağırılabilirler. Protected Internal olarak tanımlanmış değer, tanımlandığı Class‘ın içinden ve ondan türetilen sınıfların içinden erişilebilir durumdadır. Türetilen sınıfın aynı program içinde olmaması sorun teşkil etmez. Protected Internal erişim belirleyicisi, Protected ve Internal erişim belirleyicilerinin veya (or) işlemiyle birleştirilmiş hali gibidir.
Aşağıdaki görselde durumu ayrıntılı olarak görmektesiniz.
Bu konu, C Sharp mülakat soruları listesinde de çok sorulan sorulardan biridir.
C Sharp’da Access Modifierler ile ilgili anlatacaklarım bu kadar.
Herkese çalışma hayatında ve yaşamında başarılar kolaylıklar.