C# Dersleri 68 - Erişim Belirleyiciler (Access Modifiers)


C# Erişim Belirleyiciler (Access Modifiers)

Erişim belirleyiciler, C# dilinde bir sınıfın, metodun, özelliğin veya alanın diğer kod bölümleri tarafından nasıl erişileceğini kontrol eden mekanizmalardır. Erişim belirleyiciler, veri saklama, güvenlik ve sınıf üyeleri arasındaki ilişkiyi yönetmek için kullanılır.

Erişim Belirleyicilerin Türleri

C# dilinde beş temel erişim belirleyici bulunmaktadır:

  • Public: Her yerden erişilebilir.
  • Private: Yalnızca tanımlandığı sınıf içinde erişilebilir.
  • Protected: Tanımlandığı sınıf ve bu sınıfı miras alan alt sınıflar tarafından erişilebilir.
  • Internal: Yalnızca aynı proje (assembly) içinde erişilebilir.
  • Protected Internal: Aynı proje içinde veya miras alan sınıflar tarafından erişilebilir.

Erişim Belirleyicilerin Kullanımı

Aşağıda, her erişim belirleyicinin nasıl kullanıldığına dair bir örnek verilmiştir:

using System;

class Person
{
    // Public: Her yerden erişilebilir
    public string Name;

    // Private: Yalnızca bu sınıf içinde erişilebilir
    private int age;

    // Protected: Bu sınıf ve miras alan sınıflar erişebilir
    protected string Gender;

    // Internal: Aynı projede erişilebilir
    internal string Nationality;

    // Protected Internal: Aynı projede veya türetilmiş sınıflarda erişilebilir
    protected internal string Occupation;

    // Public metot: Age özelliğini ayarlamak için kullanılır
    public void SetAge(int value)
    {
        age = value;
    }

    // Public metot: Age özelliğini almak için kullanılır
    public int GetAge()
    {
        return age;
    }
}

Program Örneği

Aşağıdaki örnekte, bir sınıf içindeki erişim belirleyiciler farklı senaryolarla gösterilmiştir:

class Program
{
    static void Main(string[] args)
    {
        Person person = new Person();

        // Public özelliğe erişim
        person.Name = "Ali";
        Console.WriteLine($"Ad: {person.Name}");

        // Private özelliğe doğrudan erişim mümkün değildir
        // person.age = 30; // HATA!

        // Public metotlarla Private özelliğe erişim
        person.SetAge(30);
        Console.WriteLine($"Yaş: {person.GetAge()}");

        // Internal özelliğe erişim (aynı proje içinde)
        person.Nationality = "Türk";
        Console.WriteLine($"Uyruğu: {person.Nationality}");

        // Protected Internal özelliğe erişim
        person.Occupation = "Mühendis";
        Console.WriteLine($"Meslek: {person.Occupation}");
    }
}

Programın Çıktısı

Ad: Ali
Yaş: 30
Uyruğu: Türk
Meslek: Mühendis

Erişim Belirleyicilerin Detayları

  • Public: Herhangi bir sınıftan veya projeden erişilebilir.
  • Private: Sınıfın iç mantığını dışarıya kapatmak için kullanılır. En sık kullanılan erişim belirleyicidir.
  • Protected: Kalıtım ilişkisi olan sınıflar arasında veri paylaşımı için kullanılır.
  • Internal: Yalnızca aynı proje veya aynı derleme içinde çalışır.
  • Protected Internal: Protected ve Internal kombinasyonudur; aynı projede veya miras alan sınıflarda erişime izin verir.

Erişim Belirleyicilerin Gerçek Hayattaki Kullanımı

Erişim belirleyiciler, yazılım geliştirme sürecinde önemli bir rol oynar:

  • Public: Bir API’nin genel işlevleri için kullanılabilir.
  • Private: Bir sınıfın yalnızca kendi içinde kullanılan, dışarıya açılmayan detaylarını saklamak için kullanılır.
  • Protected: Kalıtım ilişkilerinde, alt sınıfların bazı özel bilgilere erişmesi gerektiğinde kullanılır.

Sonuç

Erişim belirleyiciler, C# dilinde veri güvenliğini sağlamak ve kodu daha modüler hale getirmek için kullanılır. Hangi erişim belirleyiciyi seçeceğiniz, veriyi kimlerin kullanması gerektiğine ve bu veri üzerinde nasıl kontrol sağlamak istediğinize bağlıdır. Erişim belirleyicilerin doğru kullanımı, kodunuzu daha güvenli, okunabilir ve sürdürülebilir hale getirecektir.