Java Erişim Belirleyiciler public pivate protected

Erişim belilreyiciler(Access modifiers) nesneye dayalı programlama(object oriented programming) için köklü bir yere sahiptir. Çoğu programcı için bir standart olsa da yeni öğrenen her programcı için pratiğe yerleştirilmesi zor bir konu.

Erişim belirleyiciler sınıfların, sınıfa ait metot ve değişkenlerin tanımlanmasında kullanılmaktadır. Java içerisinde toplam dört tane bulunur bunlar:

  • public
  • private
  • protected
  • default(package private olarakta adlandırılır)

Public : Erişime açık, her yerden erişilebilir.
Private: Erişime kapalı, sadece tanımlandığı sınıf üzerinden erişilebilir.
Default: Sınırlı erişim, yalnıca aynı paketteki sınıflar erişim sağlıyabilir.
Protected: Sınırlı erişim, yalnızca aynı paketteki sınıflar ve farklı pakette olup bu sınıftan kalıtım alan sınıflar.

Yukarıdaki tanımlarda sadece sınıf üzerinden örnekledim bu bir arayüz(interface)’ de olabilir.

Erişim belirleyiciler kullanımına göre

  • Sınıf tanımlamalarında
  • Metot tanımlamalarında
  • Sınıf değişkeni tanımlamalarında
  • Constructer tanımlamlarında

Eğer sınıf tanımlamasında private kullanılırsa, bu sınıf başka hiç bir sınıf tarafından görülemez ve nesnesi kullanılamaz.

Eğer metot tanımlamasında private kullanılırsa bu metot başka hiç bir sınıf tarafından kullanılamaz ve görülemez.

Eğer bir sınıf değişkeni private olarak tanımlanırsa bu değişken başka hiç bir sınıf tarafından görülemez.

Eğer bir Constructer private olarak tanımlanırsa bu sınıfın nesnesi sadece o sınıf içerisinden oluşturulabilir yani diğer hiç bir sınıf new ile bu sınıfın nesnesini yaratamaz.

Mesala bir sınıfın tanımlanmasında protected kullanılsın ama constructer tanımlamasında private kullanılsın. Bu aynı paketteki sınıfların bu sınıfı görebileceği fakat nesnesini yaratamayacağı anlamına gelir, bu sınıfının nesnesini private olmayan bir metot ile yaratarak diğer sınıfların kullanabilmesini sağlarız.

Comments

No comments yet. Why don’t you start the discussion?

Leave a Reply

Your email address will not be published. Required fields are marked *