Java'da Erişim Değiştiricileri

Java'da Erişim Değiştiricileri

Java'da erişim değiştiriciler, değişken yöntemleri gibi bir sınıfın üyelerinin ve hatta sınıfın kendisinin programımızın diğer bölümlerinden nasıl erişilebileceğini tanımlayan temel araçlardır.

Java'da 4 tür erişim değiştirici vardır: 

Java-1Java'da Erişim Değiştiricileri

Özel Erişim Değiştirici

Özel erişim değiştiricisi, özel anahtar sözcüğü kullanılarak belirtilir. Özel olarak bildirilen yöntemlere veya veri üyelerine yalnızca bildirildikleri sınıf içinden erişilebilir.

Java
   class   Person     {      // private variable      private     String     name  ;      public     void     setName  (  String     name  )     {      this  .  name     =     name  ;     // accessible within class      }      public     String     getName  ()     {     return     name  ;     }   }   public     class   Geeks     {      public     static     void     main  (  String  []     args  )      {      Person     p     =     new     Person  ();      p  .  setName  (  'Alice'  );      // System.out.println(p.name); // Error: 'name'      // has private access      System  .  out  .  println  (  p  .  getName  ());      }   }   

Çıkış
Alice  

Açıklama: Kapsüllemeyi zorunlu kılan Kişi dışında isme doğrudan erişime izin verilmez.

Varsayılan Erişim Değiştirici

Bir sınıf yöntemi veya veri üyesi için erişim değiştirici belirtilmediğinde, varsayılan olarak varsayılan erişim değiştiricisine sahip olduğu söylenir. Bu, yalnızca aynı paketteki sınıfların erişebileceği anlamına gelir.

Java
   class   Car     {      String     model  ;     // default access   }   public     class   Main     {          public     static     void     main  (  String  []     args  ){          Car     c     =     new     Car  ();      c  .  model     =     'Tesla'  ;     // accessible within the same package      System  .  out  .  println  (  c  .  model  );      }   }   

Çıkış
Tesla  

Açıklama: Varsayılan erişime sahip üyelere farklı bir paketteki sınıflardan erişilemez.

Geeks.java: Aynı paket içindeki varsayılan sınıf

Java
   // default access modifier    package     p1  ;      // Class Geek is having    // Default access modifier    class   Geek      {         void     display  ()         {         System  .  out  .  println  (  'Hello World!'  );         }      }   

GeeksNew.java: Farklı bir paketten varsayılan sınıf (kontrast için)

C++
   // package with default modifier    package     p2  ;      import     p1  .  *  ;     // importing package p1   // This class is having    // default access modifier    class     GeekNew     {         public     static     void     main  (  String     args  [])     {             // Accessing class Geek from package p1       Geek     o     =     new     Geek  ();         o  .  display  ();         }      }   

Açıklama:  Bu örnekte, farklı bir paketten varsayılan değiştirici sınıfa erişmeye çalıştığımızda program derleme zamanı hatasını gösterecektir.

Korumalı Erişim Değiştirici

Korumalı erişim değiştirici, protected anahtar sözcüğü kullanılarak belirtilir. Korumalı olarak bildirilen yöntemlere veya veri üyelerine aynı paket içerisinden veya farklı paketlerdeki alt sınıflardan erişilebilir.

Java
   class   Vehicle     {      protected     int     speed  ;     // protected member   }   class   Bike     extends     Vehicle     {      void     setSpeed  (  int     s  )      {      speed     =     s  ;     // accessible in subclass      }      int     getSpeed  ()      {      return     speed  ;     // accessible in subclass      }   }   public     class   Main     {      public     static     void     main  (  String  []     args  ){          Bike     b     =     new     Bike  ();      b  .  setSpeed  (  100  );      System  .  out  .  println  (  'Access via subclass method: '      +     b  .  getSpeed  ());      Vehicle     v     =     new     Vehicle  ();      System  .  out  .  println  (  v  .  speed  );      }   }   

Çıkış
Access via subclass method: 100 0  

Açıklama: hıza aynı paketteki alt sınıf yöntemleri ve diğer sınıflar aracılığıyla erişilebilir, ancak farklı bir paketten (alt sınıf olmayan) doğrudan erişim başarısız olur.

Genel Erişim Değiştirici

Genel erişim değiştiricisi, public anahtar sözcüğü kullanılarak belirtilir. Herkese açık üyelere programın her yerinden erişilebilir. Kamuya açık veri üyelerinin kapsamı konusunda herhangi bir kısıtlama yoktur.

Java
   class   MathUtils     {             public     static     int     add  (  int     a       int     b  )     {      return     a     +     b  ;      }   }   public     class   Main     {          public     static     void     main  (  String  []     args  )     {          System  .  out  .  println  (  MathUtils  .  add  (  5       10  ));     // accessible anywhere      }   }   

Çıkış
15  

Açıklama: add() genel değiştirici nedeniyle küresel olarak erişilebilirdir.

Üst düzey sınıflar veya arayüzler özel olarak bildirilemez çünkü özel 'yalnızca çevreleyen sınıf içinde görünür' anlamına gelir.

Java'daki Erişim Değiştiricilerin Karşılaştırma Tablosu

aynı_sınıfErişim Düzenleyici

Gerçek Dünya Projelerinde Her Erişim Değiştirici Ne Zaman Kullanılmalı?

  • Özel: Fikir mümkün olduğu kadar kısıtlayıcı erişim kullanılmalı, böylece mümkün olduğunca özel kullanılmalıdır.
  • Varsayılan (Paket-Özel): Genellikle paket kapsamlı yardımcı programlarda veya yardımcı sınıflarda kullanılır.
  • Korumalı: Çerçeve uzantıları gibi mirasa dayalı tasarımlarda yaygın olarak kullanılır.
  • Halk : Bu, bir uygulamanın farklı bölümleri arasında paylaşılan API uç noktaları hizmet sınıfları veya yardımcı program yöntemleri için kullanılır.


Test Oluştur