Skip to content

C# ile Erişim Belirleyicilerinin (Access Modifiers) Kullanımı

Merhaba, bu yazımda projelerimizde kullandığımız farklı sınıflara veya bu sınıflar içerisinde belirttiğimiz alanlara erişimin sınırını belirlemek için kullandığımız erişim belirleyicilerinin kullanımlarını örnekler üzerinden açıklayacağım. C# programlama dilinde kullandığımız erişim belirleyicileri Public, Internal, Protected, Protected Internal ve Private erişim belirleyicileridir.

Public

Public ile tanımladığımız alanlara farklı projeler de dâhil olmak üzere Solution içerisinde her yerden erişilebilmektedir.

Internal

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. Bir sınıfı class SınıfAdı ile Internal Class SınıfAdı tanımlamak arasında herhangi bir fark yoktur. Public ile Internal arasındaki farkı anlamak için aşağıdaki örneği inceleyelim.

1. Aşağıda aynı solution içerisindeki 2 proje yapısı gösterilmiştir.

2. SecondFolderClass.cs aşağıdaki gibi bir secondFolderName değişkenine ve PrintFolderName metoduna sahiptir.

3. Solution içerisinde farklı bir proje olan AccessModifiers içerisindeki Program.cs içerisinde SecondFolderClass sınfından bir nesne oluşturup public ile tanımlanmış olmalarına rağmen secondFolderName değişkenine ve PrintFolderName metoduna ulaşmak istediğimizde aşağıdaki gibi hatalar alınmıştır.

Bu hataların nedeni ulaşmak istediğimiz SecondFolderClass sınıfının Internal olmasıdır. Bu sınıfı Public erişim belirleyicisi ile tanımladığımızda konsolda aşağıdaki çıktıyı alırız.

Protected

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’ın kullanımını daha iyi anlayabilmek için aşağıdaki örneği inceleyelim.

Teacher sınıfı Person sınıfından türemiş ve firstName ve lastName değişkenlerini miras almıştır. Teacher sınıfı ayrıca PrintLastName metoduna sahip olup, miras aldığı ve Protected erişim belirleyicisi ile tanımlanmış olan lastName değikenine kendi metodu içerisinde ulaşabilmektedir. Burada dikkat edilmesi gereken durum, Teacher sınıfından türetilmiş olan t nesnesi ile birlikte Public olan firstName değişkeni değiştirilmiş ve konsolda yazdırılabilmiştir fakat lastName alanı Protected erişim belirleyicisi ile tanımlandığı için bu işlemleri lastName üzerinde yapmak mümkün değildir. Kod çıktısı aşağıdaki gibidir.

Protected Internal

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.

Private

Private ile tanımlanmış olan bir alana sadece tanımlandığı sınıf içerisinden ulaşılabilmektedir. Erişim belirleyiciler içerisinde erişim alanını en çok sınırlandıran ve de bir değişkenin varsayılan erişim belirleyicisi olan belirleyici Private’dır.

Yazı içerisindeki sınıf veya değişken isimlerini daha iyi seçebilirdim ama konunun anlaşılması için kullandığım örneklerin verimli olduğunu düşünüyorum. Tabii ki daha farklı senaryolar üreterek bu örnekleri çoğaltmak konunun pekiştirilmesi için çok daha iyi olacaktır. Yazılarım ile ilgili düşünceleriniz ya da yazılarımın geliştirilmesi için önerileriniz olduğu takdirde bana yasinatilgan60@gmail.com üzerinden ulaşabilirsiniz. Bir sonraki yazımda görüşmek üzere…

Konu ile ilgili yararlı bulduğum diğer Kaynaklar

https://www.javatpoint.com/c-sharp-access-modifiers

https://www.w3schools.in/csharp-tutorial/access-modifiers/

Published inC#OOP

Comments are closed.

Yasin Atılkan © 2025 Copyright | Author WordPress Theme by Compete Themes