Bu eğitimde, Java Erişim Değiştiricisi, türleri ve örnekler yardımıyla bunların nasıl kullanılacağı hakkında bilgi edineceğiz.
Erişim Değiştiriciler nedir?
Java'da erişim değiştiriciler, sınıfların, arabirimlerin, değişkenlerin, yöntemlerin, yapıcıların, veri üyelerinin ve ayarlayıcı yöntemlerin erişilebilirliğini (görünürlüğünü) ayarlamak için kullanılır. Örneğin,
class Animal ( public void method1() (… ) private void method2() (… ) )
Yukarıdaki örnekte, 2 yöntem beyan ettik: method1 () ve method2 (). Buraya,
- method1 is
public
- Bu, diğer sınıflar tarafından erişilebileceği anlamına gelir. - method2 is
private
- Bu, diğer sınıflar tarafından erişilemeyeceği anlamına gelir.
Anahtar kelimeyi Not public
ve private
. Bunlar Java'daki erişim değiştiricilerdir. Görünürlük değiştiriciler olarak da bilinirler.
Not : Alıcı yöntemlerinin erişim değiştiricisini ayarlayamazsınız.
Erişim Değiştirici Türleri
Erişim değiştirici türlerini öğrenmeden önce, Java Paketlerini bildiğinizden emin olun.
Java'da dört erişim değiştirici anahtar kelimesi vardır ve bunlar:
Değiştirici | Açıklama |
Varsayılan | bildirimler yalnızca paket içinde görülebilir (özel paket) |
Özel | bildirimler yalnızca sınıf içinde görülebilir |
Korumalı | bildirimler pakette veya tüm alt sınıflarda görülebilir |
halka açık | bildirimler her yerde görülebilir |
Varsayılan Erişim Değiştirici
Sınıflar, yöntemler, değişkenler vb. İçin açıkça herhangi bir erişim değiştirici belirtmezsek, varsayılan olarak varsayılan erişim değiştiricisi dikkate alınır. Örneğin,
package defaultPackage; class Logger ( void message()( System.out.println("This is a message"); ) )
Burada, Logger sınıfı varsayılan erişim değiştiriciye sahiptir. Ve sınıf, defaultPackage paketine ait olan tüm sınıflar tarafından görülebilir. Ancak, Logger sınıfını defaultPackage dışında başka bir sınıfta kullanmaya çalışırsak, bir derleme hatası alacağız.
Özel Erişim Değiştirici
Değişkenler ve yöntemler bildirildiğinde private
, bunlara sınıfın dışından erişilemez. Örneğin,
class Data ( // private variable private String name; ) public class Main ( public static void main(String() main)( // create an object of Data Data d = new Data(); // access private variable and field from another class d.name = "Programiz"; ) )
Yukarıdaki örnekte, ad adında bir özel değişken ve adında bir özel yöntem tanımladık display()
. Programı çalıştırdığımızda aşağıdaki hatayı alacağız:
Main.java:18: error: name has private access in Data d.name = "Programiz"; ^
Hata, özel değişkene ve Data sınıfının özel yöntemine Main sınıfından erişmeye çalıştığımız için üretildi.
Bu özel değişkenlere erişmemiz gerekip gerekmediğini merak ediyor olabilirsiniz. Bu durumda alıcılar ve ayarlayıcılar yöntemini kullanabiliriz. Örneğin,
class Data ( private String name; // getter method public String getName() ( return this.name; ) // setter method public void setName(String name) ( this.name= name; ) ) public class Main ( public static void main(String() main)( Data d = new Data(); // access the private variable using the getter and setter d.setName("Programiz"); System.out.println(d.getName()); ) )
Çıktı :
Adı Programiz
Yukarıdaki örnekte, isim adında özel bir değişkenimiz var. Değişkene dış sınıftan erişmek için şu yöntemleri kullandık: getName()
ve setName()
. Bu yöntemlere Java'da alıcı ve ayarlayıcı adı verilir.
Burada, setName()
değişkene değer atamak için setter yöntemini ( ) ve değişkene getName()
erişmek için getter yöntemini ( ) kullandık.
this
Sınıfın değişkenine atıfta bulunmak için setName () içindeki anahtar kelimeyi kullandık . Bu anahtar kelime hakkında daha fazla bilgi edinmek için Java this Keyword adresini ziyaret edin.
Not : Java'da sınıfları ve arayüzleri özel ilan edemeyiz. Ancak, iç içe geçmiş sınıflar özel olarak ilan edilebilir. Daha fazla bilgi edinmek için Java Nested ve Inner Class sayfasını ziyaret edin.
Korumalı Erişim Değiştirici
Yöntemler ve veri üyeleri bildirildiğinde protected
bunlara alt sınıfların yanı sıra aynı paket içinde erişebiliriz. Örneğin,
class Animal ( // protected method protected void display() ( System.out.println("I am an animal"); ) ) class Dog extends Animal ( public static void main(String() args) ( // create an object of Dog class Dog dog = new Dog(); // access protected method dog.display(); ) )
Çıktı :
Ben bir hayvanım
Yukarıdaki örnekte, display()
Animal sınıfının içinde adlandırılan korumalı bir yöntemimiz var . Animal sınıfı, Dog sınıfı tarafından miras alınır. Miras hakkında daha fazla bilgi edinmek için Java Inheritance'ı ziyaret edin.
Daha sonra Dog sınıfından bir nesne köpeği yarattık. Nesneyi kullanarak ana sınıfın korumalı yöntemine erişmeye çalıştık.
Korumalı yöntemlere alt sınıflardan erişilebildiği için, Dog sınıfından Animal sınıfının yöntemine erişebiliyoruz.
Not : protected
Java'da sınıflar veya arayüzler tanımlayamayız.
Genel Erişim Değiştirici
Yöntemler, değişkenler, sınıflar vb. Bildirildiğinde public
, onlara her yerden erişebiliriz. Genel erişim değiştiricinin kapsam kısıtlaması yoktur. Örneğin,
// Animal.java file // public class public class Animal ( // public variable public int legCount; // public method public void display() ( System.out.println("I am an animal."); System.out.println("I have " + legCount + " legs."); ) ) // Main.java public class Main ( public static void main( String() args ) ( // accessing the public class Animal animal = new Animal(); // accessing the public variable animal.legCount = 4; // accessing the public method animal.display(); ) )
Çıktı :
Ben bir hayvanım 4 bacağım var.
Buraya,
- Genel Hayvan sınıfına Ana sınıftan erişilir.
- Genel değişken legCount'a Main sınıfından erişilir.
- Genel yönteme
display()
Main sınıfından erişilir.
Erişim Değiştiriciler Tek bir şekilde özetlenmiştir

Erişim değiştiriciler esas olarak kapsülleme için kullanılır. Bir programın hangi bölümünün bir sınıfın üyelerine erişebileceğini kontrol etmemize yardımcı olabilirim. Böylece verilerin kötüye kullanılması önlenebilir. Kapsülleme hakkında daha fazla bilgi edinmek için Java Encapsulation sayfasını ziyaret edin.