- Özel erişim değiştirici
- Özel inşaatçının rolü
- Varsayılan erişim değiştirici
- Korumalı erişim değiştirici
- Genel erişim değiştirici
- Yöntem Geçersiz Kılma ile Erişim Değiştirici
Java'da iki tür değiştirici vardır: erişim değiştiricileri Ve erişim dışı değiştiriciler .
Java'daki erişim değiştiricileri bir alanın, yöntemin, yapıcının veya sınıfın erişilebilirliğini veya kapsamını belirtir. Erişim değiştiriciyi uygulayarak alanların, yapıcıların, yöntemlerin ve sınıfın erişim düzeyini değiştirebiliriz.
Dört tür Java erişim değiştiricisi vardır:
Statik, soyut, senkronize, yerel, geçici, geçici vb. gibi pek çok erişim dışı değiştirici vardır. Burada yalnızca erişim değiştiricileri öğreneceğiz.
Java Erişim Değiştiricilerini Anlamak
Java'daki erişim değiştiricileri basit bir tabloyla anlayalım.
Erişim Değiştirici | sınıf içinde | paket içinde | yalnızca alt sınıfa göre dış paket | dış paket |
---|---|---|---|---|
Özel | VE | N | N | N |
Varsayılan | VE | VE | N | N |
Korumalı | VE | VE | VE | N |
Halk | VE | VE | VE | VE |
1) Özel
Özel erişim değiştiricisine yalnızca sınıf içinden erişilebilir.
kaplan ile aslan arasındaki fark
Özel erişim değiştiricinin basit örneği
Bu örnekte A ve Simple olmak üzere iki sınıf oluşturduk. Bir sınıf, özel veri üyesini ve özel yöntemi içerir. Bu özel üyelere sınıf dışından erişiyoruz, dolayısıyla derleme zamanı hatası var.
class A{ private int data=40; private void msg(){System.out.println('Hello java');} } public class Simple{ public static void main(String args[]){ A obj=new A(); System.out.println(obj.data);//Compile Time Error obj.msg();//Compile Time Error } }
Özel İnşaatçının Rolü
Herhangi bir sınıf yapıcısını özel yaparsanız, o sınıfın örneğini sınıfın dışından oluşturamazsınız. Örneğin:
class A{ private A(){}//private constructor void msg(){System.out.println('Hello java');} } public class Simple{ public static void main(String args[]){ A obj=new A();//Compile Time Error } }
Not: Bir sınıf, iç içe geçmiş sınıf dışında özel veya korumalı olamaz.
2) Varsayılan
Herhangi bir değiştirici kullanmazsanız, şu şekilde değerlendirilir: varsayılan varsayılan olarak. Varsayılan değiştiriciye yalnızca paket içinden erişilebilir. Paketin dışından erişilemez. Özelden daha fazla erişilebilirlik sağlar. Ancak korunan ve halka açık olandan daha kısıtlayıcıdır.
dizeyi int'ye ayrıştırma
Varsayılan erişim değiştirici örneği
Bu örnekte pack ve mypack olmak üzere iki paket oluşturduk. A sınıfı public olmadığı için paketin dışından erişiyoruz, dolayısıyla paket dışından erişilemiyor.
//save by A.java package pack; class A{ void msg(){System.out.println('Hello');} }
//save by B.java package mypack; import pack.*; class B{ public static void main(String args[]){ A obj = new A();//Compile Time Error obj.msg();//Compile Time Error } }
Yukarıdaki örnekte, A sınıfının kapsamı ve msg() yöntemi varsayılan olduğundan ona paketin dışından erişilemez.
3) Korumalı
korumalı erişim değiştirici Paket içinden ve paketin dışından erişilebilir, ancak yalnızca miras yoluyla erişilebilir.
Korumalı erişim değiştiricisi veri üyesine, yönteme ve yapıcıya uygulanabilir. Sınıfta uygulanamaz.
Varsayılan değiştiriciden daha fazla erişilebilirlik sağlar.
Korumalı erişim değiştirici örneği
Bu örnekte pack ve mypack olmak üzere iki paket oluşturduk. A sınıfı paket paketi herkese açıktır, dolayısıyla paketin dışından erişilebilir. Ancak bu paketin msg metodu protected olarak bildirildiği için sınıf dışından ancak miras yoluyla erişilebilir.
Rajinikanth
//save by A.java package pack; public class A{ protected void msg(){System.out.println('Hello');} }
//save by B.java package mypack; import pack.*; class B extends A{ public static void main(String args[]){ B obj = new B(); obj.msg(); } }
Output:Hello
4) Kamu
genel erişim değiştirici her yerden ulaşılabilir. Diğer tüm değiştiriciler arasında en geniş kapsama sahiptir.
Genel erişim değiştirici örneği
//save by A.java package pack; public class A{ public void msg(){System.out.println('Hello');} }
//save by B.java package mypack; import pack.*; class B{ public static void main(String args[]){ A obj = new A(); obj.msg(); } }
Output:Hello
Yöntem Geçersiz Kılma ile Java Erişim Değiştiricileri
Herhangi bir yöntemi geçersiz kılıyorsanız, geçersiz kılınan yöntem (yani alt sınıfta bildirilen) daha kısıtlayıcı olmamalıdır.
class A{ protected void msg(){System.out.println('Hello java');} } public class Simple extends A{ void msg(){System.out.println('Hello java');}//C.T.Error public static void main(String args[]){ Simple obj=new Simple(); obj.msg(); } }
Varsayılan değiştirici korumalıdan daha kısıtlayıcıdır. Bu nedenle derleme zamanı hatası oluşur.