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:
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, private gibi sadece kendi içerisinden erişilebilir ancak kalıtılır. Yani protected bir field kendisini extend eden bir başka Class tarafından kullanılabilir.

Class oluştururken başına yazılan access modifier'ı soruyorsanız public veya hiç bir şey olarak kullanılıyor.
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:
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?
"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.
 
Uyarı! Bu konu 5 yıl önce açıldı.
Muhtemelen daha fazla tartışma gerekli değildir ki bu durumda yeni bir konu başlatmayı öneririz. Eğer yine de cevabınızın gerekli olduğunu düşünüyorsanız buna rağmen cevap verebilirsiniz.

Bu konuyu görüntüleyen kullanıcılar

Technopat Haberler

Yeni konular

Geri
Yukarı