logo

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-1'de Erişim Değiştiriciler' title=Java'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ıf' loading='lazy' title=Eriş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