اذهب إلى المحتوى

السؤال

Recommended Posts

  • 0
نشر

تقوم محددات الوصول بتحديد إمكانية الوصول للدوال أو خصائص الكائن والفرق بين المحددات كالتالي

  • private يمكن الوصول لخصائص الكائن من داخل الكائن نفسه فقط كمثال
    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);//يتم توليد خطأ
       obj.msg();//يتم توليد خطأ 
       }  
    }  

     

  • Protected يمكن الوصول لخصائص الكائن سواء داخل ال package أو خارجها ولكن من خلال الكائنات التي ترث الكائن الأب

  • Public يمكن الوصول لخصائص الكائن سواء داخل ال package أو خارجها من أي مكان في البرنامج

  • Default وهي القيمة الإفتراضية في حالة لم تضع محدد وصول يمكن الوصول لخصائص الكائن داخل ال package فقط من أي مكان في البرنامج

  • 0
نشر

محددات الوصول في جافا هي ثلاثة انواع public، protected، private بالعربية: عام، محمي، خاص، و هي كلمات محجوزة في لغة جافا نستعملها قبل خصائص او وظائف الصنف او الكلاس و هذه الكلمات تُحدد طريقة و تتحكم في الوصول إلى هذه الخصائص او الوظائف.

الخاص إذا ما وضعنا الكلمة private قبل الخاصية او الوظيفة سنتمكن من الوصول إليها من داخل الكلاس فقط

المحمي إذا ما وضعنا الكلمة protected قبل الخاصية او الوظيفة سنتمكن من الوصول إليها من داخل الكلاس و من الكلاسات الأبناء و من الكلاسات التي تنتمي لنفس الحزمة (package) 

العام: إذا ما وضعنا الكلمة public قبل الخاصية او الوظيفة سنتمكن من الوصول إليها في أي مكان سواء داخل الكلاس في الكلاسات الأبناء أو في كلاسات أخرى.

هناك نوع آخر في جافا غير مُستعمل كثيراً يُسمى الإفتراضي و هو إذا لم نحدد أي كلمة و هذا يعني أن الوصول إلى الخاصية أو الوظيفة يكون في إطار الحزمة ( package ) فقط.

  • 0
نشر

هذه المحددات لمعرفة كيفية تعامل الأصناف مع بعضها و كيفبة الوصول الى المتغيرات و الدوال من صنف معين 

  • private هو محدد يمنع أي صنف أخر من أستخدام هذه الدالة أو المتغير و لا يمكن أستدعئها من خارج الصنف هي فقط تعمل داخليا .
  • public تمكنك من أستخدام الدالة أو المتغير من خلال أي صنف أخر و هنا مثال عليها كالتالي 
package p1;  
public class Demo1   
{   
public void show()   
{   
System.out.println("Javatpoint");   
}   
}   


import p1.*;   
class Demo2   
{   
public static void main(String args[])   
{   
Demo1 obj = new Demo1();   
obj.show();   
}   
}  

// هنا لن سيقوم بطباعة الأمر خصوصا بدون أي أخطاء لكن أم قمنا بتغيير المحدد الى private
//فسيقوم بأعطاء خطأ لانه لا يسمح لك بأستخدام هذه الدالة خارج الصنف نفسه 
// كالتالي 

package p1;  
public class Demo1   
{   
private void show()   
{   
System.out.println("Javatpoint");   
}   
}   


import p1.*;   
class Demo2   
{   
public static void main(String args[])   
{   
Demo1 obj = new Demo1();   
obj.show();   
}   
}  
// سيخرج لك هذه المشكلة 
// error: show() has private access in demo1 ....

أما بالنسبة للمحدد protected قهل لاحظت أننا نستعمل كلمة package أي رزمة أو حزمة من الأصناف و هنا ما يحدث أنك تستطيع أن تستخد أي دالة أو متغير يحملون المحدد من نوع protected فقط أن كانو بنفس الpackage  أما خارجها فسيطبع لك خطأ كالتالي :

// الرزمة التي تحتوي على الصنفين 
package p1;  
// الصنف الأول 
public class Demo1   
{ 
// الدالة الأولى 
private void show()   
{   
System.out.println("Javatpoint");   
}   
}   
// الصنف الثاني و ينتمي لنفس الرزمة 
public class Demo2   
{   


  // الدالة الثانية تستخدم الدالة الأولى للطباعة 
public void show2()   
{   
  Demo1 obj = new Demo1();   
   
obj.show();   
}   
}   


// أما أن أستخدمتها مبتشرة داخل ال main  فسيعطيك خطأ

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...