C# ve diğer nesne yönelimli programlama dillerinde erişim belirleyicileri, kodunuzu daha düzenli ve güvenli hale getirmek için kullanılır. Bu yazıda, public, private, internal, protected ve diğer erişim belirleyicilerini, bunların ne anlama geldiklerini ve nasıl kullanıldıklarını inceleyeceğiz.

Public

Public erişim belirleyicisi, bir sınıf veya üyenin (metot, özellik vb.) hem bulunduğu sınıfın içerisinden hem de diğer sınıflardan erişilebilir olmasını sağlar. Public olarak tanımlanan bir sınıf veya üye, herhangi bir kısıtlama olmaksızın her yerden erişilebilir. Bu, özellikle diğer bileşenler veya kütüphanelerle etkileşimde bulunurken faydalıdır.

public class ExampleClass
{
    public int publicField;

    public void PublicMethod()
    {
        // Her yerden erişilebilir.
    }
}

Private

Private erişim belirleyicisi, bir sınıf veya üyenin yalnızca tanımlandığı sınıf içerisinden erişilebilir olmasını sağlar. Bu, sınıfın iç detaylarını gizlemek ve sadece sınıfın kendisi tarafından kullanılacak üyeleri belirlemek için kullanılır. Private olarak tanımlanan üyeler, dışarıdan erişilemez ve böylece sınıfın iç yapısını korur.

public class ExampleClass
{
    private int privateField;

    private void PrivateMethod()
    {
        // Sadece bu sınıf içerisinde erişilebilir.
    }
}

Internal

Internal erişim belirleyicisi, bir sınıf veya üyenin sadece tanımlandığı projenin içerisinden erişilebilir olmasını sağlar. Bu, projenin diğer bölümlerinden erişilebilen, ancak dışarıdan erişilemeyen üyeler oluşturmak için kullanılır. Internal erişim belirleyicisi, projeyi daha modüler ve yönetilebilir hale getirir.

internal class ExampleClass
{
    internal int internalField;

    internal void InternalMethod()
    {
        // Aynı projede her yerden erişilebilir.
    }
}

Protected

Protected erişim belirleyicisi, bir üyenin yalnızca tanımlandığı sınıf ve bu sınıftan türetilen alt sınıflar tarafından erişilebilir olmasını sağlar. Bu, kalıtım yoluyla davranışların ve özelliklerin alt sınıflar tarafından kullanılmasını sağlarken, dışarıdan erişimi engeller. Protected üyeler, sınıf hiyerarşisinde bilgi saklama ve yeniden kullanım açısından önemlidir.

public class BaseClass
{
    protected int protectedField;

    protected void ProtectedMethod()
    {
        // Sadece bu sınıf ve alt sınıfları tarafından erişilebilir.
    }
}
public class DerivedClass : BaseClass
{
    public void AccessProtectedMember()
    {
        protectedField = 5;
        ProtectedMethod();
    }
}

Protected Internal

Protected Internal erişim belirleyicisi, bir üyenin hem aynı proje içerisindeki sınıflar hem de türetilen sınıflar tarafından erişilebilir olmasını sağlar. Bu, sınıfın işlevselliğinin daha geniş bir kapsamda kullanılmasına izin verirken, yine de belirli bir erişim kontrolü sağlar. Protected Internal üyeler, hem projeyi hem de kalıtım ilişkilerini etkili bir şekilde yönetmek için kullanılır.

public class ExampleClass
{
    protected internal int protectedInternalField;

    protected internal void ProtectedInternalMethod()
    {
        // Aynı proje veya türetilen sınıflardan erişilebilir.
    }
}

Private Protected

Private Protected erişim belirleyicisi, bir üyenin yalnızca tanımlandığı sınıf ve bu sınıftan türetilen sınıflar içerisinde erişilebilir olmasını sağlar, ancak bu erişim sadece aynı proje içerisindeki türetilen sınıflarla sınırlıdır. Bu, sınıfın iç yapısını ve davranışlarını daha sıkı bir şekilde kontrol ederken, yine de belirli bir düzeyde esneklik sağlar. Private Protected üyeler, özellikle büyük projelerde ve karmaşık sınıf hiyerarşilerinde faydalıdır.

public class ExampleClass
{
    private protected int privateProtectedField;

    private protected void PrivateProtectedMethod()
    {
        // Aynı proje ve türetilen sınıflar içerisinde erişilebilir.
    }
}

Bu erişim belirleyicileri, kodunuzu daha güvenli ve düzenli hale getirmek için kullanılır. Hangi belirleyicinin kullanılacağı, kodunuzun ihtiyaçlarına ve hangi sınıfların/metotların nereden erişilmesi gerektiğine bağlı olarak değişir. Erişim belirleyicilerini doğru kullanmak, hem kodun okunabilirliğini artırır hem de olası hataların önüne geçer.

Kategori: