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.