Java Erişim Belirleyiciler (Access Modifier) – Java Dersleri

0
854
Java Erişim Belirleyiciler (Access Modifier) - Java Dersleri
Java Erişim Belirleyiciler (Access Modifier) - Java Dersleri

Sınıf Üyelerine Erişimi Kontrol Etme

Erişim düzey belirleyiciler, diğer sınıfların belirli bir alanı kullanıp kullanmayacağını veya belirli bir yöntemi çağırıp çağıramayacağını belirler. Erişim kontrolünün iki seviyesi vardır:

  • En üst seviyede – public veya package-private (belirgin/açık değiştirici/belirleyici yok (no explicit modifier))
  • Üye seviyesinde – public, private, protected veya package-private (belirgin/açık değiştirici/belirleyici yok (no explicit modifier))

//no explicit modifier: Anlamı paket erişimidir. Basitçe açıklarsak, oluşturduğunuz herhangi bir sınıfla aynı paketi paylaşan bir sınıf metotlarınızı görebilir veya kullanabilir. Üst sınıfla aynı pakette olmadıkça alt sınıflar metotlarınızı göremez veya kullanamaz.

Bir sınıf, public belirleyicisiyle bildirilebilir, bu durumda bu sınıf, her yerdeki tüm sınıflarda görülebilir. Bir sınıfın belirleyicisi yoksa (varsayılan (default), package-private olarakta bilinir), o sadece kendi paketinin içinde görünürdür. (paketler ilişkili sınıfların grupları olarak isimlendirilir – sonraki bir derste bunları öğreneceksiniz.)

Üye seviyesinde, ayrıca public belirleyici kullanabilirsiniz veya üst seviye sınıflarda olduğu gibi ve aynı anlama gelen belirleyicisiz (package-private) kullabilirsiniz. Açıklamak gerekirse; belirleyicisiz dediğimiz herhangi bir erişim belirleyici kullanmamaktır. Eğer ki bir erişim belirleyici kullanmazsanız, sadece kendi paket içinde görünür. Üyeler için, ek iki erişim belirleyici vardır: private ve protected. Private belirleyici, üyeye sadece kendi sınıfı içinde erişilebileceğini belirtir. Protected belirleyici, üyeye sadece kendi paketi içinde (package-private ‘da olduğu gibi) ve ek olarak başka paketteki onun sınıfının bir alt sınıfı tarafından erişilebileceğini belirtir.

Aşağıdaki tablo her belirleyici tarafından izin verdiği üyelere erişim gösterilmektedir.

Modifier
(Belirleyici)
Class
(Sınıf)
Package
(Paket)
Subclass
(Alt sınıf)
World
(Tüm Proje)
publicEvetEvetEvetEvet
protectedEvetEvetEvetHayır
no modifierEvetEvetHayırHayır
privateEvetHayırHayırHayır
Erişim Seviyeleri / Java Erişim Belirleyici Seviyeleri

İlk veri sütunu, sınıfın kendisinin erişim seviyesi tarafından tanımlanan üyeye erişimi olup olmadığını gösterir. Gördüğünüz gibi, bir sınıfın her zaman kendi üyelerine erişimi vardır. İkinci sütun, sınıfla benzer paketteki sınıfların (ebeveynliklerini dikkate almadan) üyeye erişimi olup olmadığını gösterir. Üçüncü sütun, bu paketin dışında bildirilen sınıfın alt sınıflarının üyeye erişimi olup olmadığını gösterir. Dördüncü sütun, tüm sınıfların üyeye erişimi olup olmadığını gösterir.

Erişim seviyeleri iyi şekilde sizi etkiler. Birincisi, başka bir kaynaktan gelen sınıfları kullandığınızda, örneğin Java platformundaki sınıflar, erişim seviyeleri kendi sınıflarınızın hangi üyelerini kullanabileceğini belirler. İkincisi, bir sınıf yazdığınızda, sınıfınızdaki her üye değişkenin ve her metotun hangi erişim seviyesine sahip olması gerektiğine karar vermeniz gerekir.

Bir sınıf koleksiyonuna bakalım ve erişim seviyelerinin görünürlüğü nasıl etkilediğini görelim. Aşağıdaki şekil bu örnekteki 4 sınıfı ve ilişkilerinin nasıl olduğunu gösterir.

Erişim Seviyelerini Örneklerle Açıklamak İçin Kullanılan Örnek Sınıflar ve Paketler

Aşağıdaki tablo, Alpha sınıfının üyelerinin, kendilerine uygulanabilen erişim belirleyicilerin her birisi için nerede göründüklerini gösterir.

Modifier
(Belirleyici)
AlphaBetaAlphasubGamma
publicEvetEvetEvetEvet
protectedEvetEvetEvetHayır
no modifierEvetEvetHayırHayır
privateEvetHayırHayırHayır
Görünürlük / Java Erişim Belirleyici Seviyeleri

Bir Erişim Seviyesi Seçme İpuçları

Başka programcılar sizin sınıfınızı kullanırsa, yanlış kullanımdan meydana gelen hataların oluşmamasını sağlamak istersiniz. Erişim seviyeleri bunu yapmak için size yardım edebilir.

  • Belirli bir üye için anlamlı olan en kısıtlayıcı erişim düzeyini kullanın. İyi bir nedeniniz yoksa, private kullanın.
  • Sabitler (constants) hariç public alanlardan kaçının. (Bu eğitimde pek çok örnekte public alanlar kullanılır. Bu bazı noktaları kısaca açıklamaya yardımcı olabilir, ancak ürün kodu için tavsiye edilmez.) Public alanlar belirli bir uygulamaya bağlama ve kodunuzu değiştirmedeki esnekliğinizi sınırlama eğilimindedir.

Bu yazı Oracle Java Dökümanı kullanılarak İngilizceden Türkçeye çevrilmiştir. Sadece kaynak göstererek kullanabilirsiniz.

Çeviri Yapılan Bölüm Linki

CEVAP VER

Lütfen yorumunuzu giriniz!
Lütfen isminizi buraya giriniz