-
Java'da erişim belirleyiciler (access modifiers), sınıfların, alanların (field), metotların ve kurucuların (constructor) erişim seviyesini tanımlar.
-
Dört erişim seviyesi vardır:
private- default (belirtilmezse)
protectedpublic
- Yalnızca aynı sınıf içinden erişilebilir.
- Sınıflar
privateolamaz.
public class Clock {
private long time = 0;
private Clock(long time) {
this.time = time;
}
public static Clock newClock() {
return new Clock(System.currentTimeMillis());
}
}public long getTime() { return this.time; }
public void setTime(long t) { this.time = t; }- Hiçbir modifier yazılmazsa default olur.
- Aynı paket içindeki sınıflar erişebilir.
public class Clock {
long time = 0; // default
}
class Reader {
Clock c = new Clock();
long t = c.time;
}defaultile aynı erişimi sağlar + farklı paketteki alt sınıflar erişebilir.
public class Clock {
protected long time = 0;
}
public class SmartClock extends Clock {
public long getTimeInSeconds() {
return this.time / 1000;
}
}- Her yerden erişim sağlar (sınıf, paket fark etmez).
public class Clock {
public long time = 0;
}
class Reader {
Clock c = new Clock();
long t = c.time;
}| Modifier | Uygulanabilir |
|---|---|
| private | ❌ (sınıfa uygulanamaz) |
| default | ✅ (aynı paketten erişilebilir) |
| protected | ❌ (sınıfa uygulanamaz) |
| public | ✅ (her yerden erişilebilir) |
// Default erişim
class MyClass { ... }
// Public erişim
public class YourClass { ... }- Tüm metotlar ve değişkenler public olmak zorundadır.
private,protected,defaultkullanılamaz.
public interface Clock {
void start(); // public implied
}- Alt sınıf, üst sınıftaki metodu daha az erişilebilir yapamaz.
// Üst sınıf
protected void doSomething() {}
// Alt sınıf
public void doSomething() {} // genişletme OK// Üst sınıf
public void doSomething() {}
// Alt sınıf
protected void doSomething() {} // HATA: daha az erişim verilmez| Modifier | Aynı Sınıf | Aynı Paket | Alt Sınıf (farklı paket) | Her Yerden |
|---|---|---|---|---|
private |
✅ | ❌ | ❌ | ❌ |
default |
✅ | ✅ | ❌ | ❌ |
protected |
✅ | ✅ | ✅ | ❌ |
public |
✅ | ✅ | ✅ | ✅ |