Java Access Modifiers Nedir? (Public, Private, Protected, Default)
Bu rehberde Java access modifiers (erişim belirleyiciler) konusunu detaylı şekilde öğreneceksiniz. public, private, protected ve default kavramlarını örneklerle açıklıyoruz.
Java’da yazdığınız her class, metod ve değişken için erişim kontrolü yapmak gerekir. Encapsulation (kapsülleme) prensibi gereği, her üyeye her yerden erişilmesi doğru değildir.
1. Access Modifiers (Erişim Belirleyiciler) Nedir?
Java’da bir class veya class üyesinin (metot, değişken, constructor) başka sınıflardan erişilebilirliğini belirlemek için kullanılır.
- public – Her yerden erişilebilir
- private – Sadece aynı class içinde erişilebilir
- protected – Aynı paket + alt classlar
- default – Sadece aynı paket (modifier yazılmaz)
2. Access Modifiers Detaylı Anlatım
Public
Her yerden erişilebilir. En geniş erişim seviyesidir.
public class Hayvan {
public void sesVer() {
System.out.println("Ses");
}
}
Private
Sadece tanımlandığı class içinde erişilebilir.
public class Kitap {
private String isim;
}
Protected
Aynı paketteki classlar ve farklı paketlerdeki alt classlar erişebilir.
public class Demo {
protected int x = 9;
}
Default (Package-Private)
Hiçbir modifier yazılmazsa varsayılan olur. Sadece aynı paket içinden erişilebilir.
class Deneme {
void oku() { }
}
3. Erişim Belirleyiciler ve Kalıtım (Inheritance)
Java’da alt classlar sadece public ve protected üyeleri miras alabilir.
public class Hayvan {
public String ses() { return "mö mö"; }
}
public class Inek extends Hayvan {
public void kullanHayvan() {
System.out.println(this.ses());
}
}
4. Protected vs Default Farkı
- Protected: Farklı paketlerden sadece inheritance ile erişilir
- Default: Sadece aynı paket içinde erişim vardır
5. Access Modifier Karşılaştırma Tablosu
| Erişim | Aynı Sınıf | Aynı Paket | Alt Sınıf | Diğer Paket |
|---|---|---|---|---|
| public | ✔ | ✔ | ✔ | ✔ |
| protected | ✔ | ✔ | ✔ | ✖ |
| default | ✔ | ✔ | ✖ | ✖ |
| private | ✔ | ✖ | ✖ | ✖ |
Sık Sorulan Sorular
Private method override edilir mi?
Hayır, private methodlar override edilemez.
Default metoda farklı paketten erişilebilir mi?
Hayır, sadece aynı paket içinde erişilebilir.
Protected üyeye farklı paketten nasıl erişilir?
Sadece inheritance (kalıtım) ile erişilebilir.
Sonuç
Java access modifiers, yazdığınız kodun güvenliğini ve sürdürülebilirliğini doğrudan etkiler. Doğru modifier seçimi ile daha temiz, modüler ve güvenli yazılım geliştirebilirsiniz.