Access Modifiers (Erişim Değiştiricileri)
Nedir?
Access Modifiers, sınıfların, metotların ve özelliklerin erişim seviyesini belirleyen anahtar kelimelerdir.
Çeşitleri
1. public - Herhangi bir yerden erişilebilir
public class MyClass { }
public void PublicMethod() { }
2. private - Sadece sınıf içinden erişilebilir
private int _value;
private void PrivateMethod() { }
3. protected - Sınıf ve alt sınıflardan erişilebilir
protected void ProtectedMethod() { }
4. internal - Aynı proje içinden erişilebilir
internal class InternalClass { }
5. protected internal - Proje içi + Alt sınıflar
protected internal void Method() { }
6. private protected - Aynı proje içindeki alt sınıflar
private protected void Method() { }
Çeşitleri ve Kullanımları
1. public
- Erişim: Herhangi bir yerden erişilebilir
- Kapsam: Proje içi ve dışı
- Kullanım: API'ler, genel metotlar
public class MyClass
{
public void PublicMethod()
{
// Herhangi bir yerden çağrılabilir
}
}
2. private
- Erişim: Sadece tanımlandığı sınıf içinden erişilebilir
- Kapsam: Sınıf içi
- Kullanım: İç implementasyon detayları
- Default: Sınıf üyeleri için varsayılan değer
public class MyClass
{
private int _internalValue;
private void PrivateMethod()
{
// Sadece bu sınıf içinden çağrılabilir
}
}
3. protected
- Erişim: Tanımlandığı sınıf ve türetilen sınıflardan erişilebilir
- Kapsam: Sınıf + Alt sınıflar
- Kullanım: Kalıtım için gerekli üyeler
public class BaseClass
{
protected void ProtectedMethod()
{
// Sınıf ve alt sınıflardan erişilebilir
}
}
public class DerivedClass : BaseClass
{
public void CallProtected()
{
ProtectedMethod(); // Erişilebilir
}
}
4. internal
- Erişim: Aynı assembly (proje) içinden erişilebilir
- Kapsam: Proje içi
- Kullanım: Proje içi yardımcı sınıflar
- Default: Sınıflar için varsayılan değer
internal class InternalClass
{
internal void InternalMethod()
{
// Aynı proje içinden erişilebilir
}
}
5. protected internal
- Erişim: Aynı assembly içinden VEYA türetilen sınıflardan erişilebilir
- Kapsam: Proje içi + Alt sınıflar (diğer projelerde)
- Kullanım: Kütüphanelerde kalıtım için
public class BaseClass
{
protected internal void ProtectedInternalMethod()
{
// Aynı proje içinden veya alt sınıflardan erişilebilir
}
}
6. private protected (C# 7.2+)
- Erişim: Aynı sınıf içinden VEYA aynı assembly'deki türetilen sınıflardan
- Kapsam: Sınıf + Aynı proje içindeki alt sınıflar
- Kullanım: Çok nadir kullanım
public class BaseClass
{
private protected void PrivateProtectedMethod()
{
// Sadece aynı proje içindeki alt sınıflardan erişilebilir
}
}
Karşılaştırma Tablosu
| Modifier | Aynı Sınıf | Aynı Proje | Alt Sınıf (Aynı) | Alt Sınıf (Farklı) | Dış Proje |
|---|---|---|---|---|---|
| public | ✓ | ✓ | ✓ | ✓ | ✓ |
| private | ✓ | ✗ | ✗ | ✗ | ✗ |
| protected | ✓ | ✓ | ✓ | ✓ | ✗ |
| internal | ✓ | ✓ | ✗ | ✗ | ✗ |
| protected internal | ✓ | ✓ | ✓ | ✓ | ✗ |
| private protected | ✓ | ✓ | ✓ | ✗ | ✗ |
En İyi Uygulamalar
- Encapsulation: Varsayılan olarak
privatekullanın - Gerekli olduğunda açın: Sadece gerekli üyeleri
publicyapın - Kalıtım: Alt sınıflar için
protectedkullanın - Proje içi:
internalile proje içi yardımcıları gizleyin
