Java'da sınıflar için access modifiers

SECBEGENAL

Picopat
Katılım
24 Mart 2021
Mesajlar
108
Çözümler
1
Merhabalar, aklıma bir şey takıldı. Sınıflar genellikle public olarak oluşturulur. (Ya sadece public ya da modifier olmadan)
  • Peki neden protected kullanılmasına izin verilmiyor? Yani bir sınıfa belki de sadece o package içinden erişilebilmek isteniyor. Hadi tamam proteced kullanılmasına izin verilmiyor, peki niye modifier kullanılmadan da oluyor? Sonuçta modifier olmadan aynı paket içerisindekisınıflardan erişebiliniyor. Yani neredeyse protectedile aynı. (subclass hariç) Yani bu yüzden mantığını çözemedim.
Açıklayabilir misiniz?
 
Hiç bir şey yazmazsanız package private olur.
public, adı üstünde her yerden erişim ve kalıtılabilir.
private, sadece ve sadece kendi içerisinden erişilebilir kalıtılamaz.
protected, public gibi dışarıdan erişilemez ancak kalıtılır. Yani protected bir field kendisini extend eden bir başka Class tarafından kullanılabilir.
 
Son düzenleme:
Merak ettiğim: protected kullanmak yerine neden böyle yapmış olabilirler sizce, bir fikriniz var mı?
package private
 
Sanırım Package içerisinde public, dışarısında ise private gibi davranan bir access modifier'a ihtiyaç duydular.
Class​
Package​
Subclass (aynı package)​
Subclass (farklı package)​
Dışarıdan​
public​
+​
+​
+​
+​
+​
protected​
+​
+​
+​
+​
package private​
+​
+​
+​
private​
+​

+ : erişilebilir.

Stackoverflow'daki bir tablodan alıntı.
 
Son düzenleme:
"Peki neden protected kullanılmasına izin verilmiyor?"

- Protected ve private class'i inner class'lar icin kullanabilirsin. Outer class icin mantiksiz.

Default olarak modifier belirtilmediyse package private oldugu assume ediliyor.
Protected keywordu field'lar icin anlamli ki inner class da bir attribute.
 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için çerezleri kabul etmelisiniz. Daha Fazlasını Öğren.…