هل لاحظت وجود كلمات مثل public و private التي تسبق تعريف الاصناف (classes) و الطرق methods و المتغيرات variables. تستخدم تلك المغيرات لتحديد نطاق استخدام الاصناف والطرق و المتغيرات، فبعضها يمكننا من استخدامها في كل البرنامج وبعضها يجعل نطاق استخدامها هي الحزمة / الرزمة package التي توجد بها وهكذا.

هناك 4 مغيرات وصول access modifiersفي الجافا تستخدم مع الطرق والمتغيرات و يستخدم 2 منهم مع الاصناف.

فلنتخيل عندنا مجموعة من الاصناف كما في الشكل الاتي ونرى اين يمكن استخدامها

public class Animal{
	private int a1; 
	int a2;
	protected int a3;
	public a4;
	
	Animal(){
		a1 = 1; // لا احد خارج الصنف يستطيع الوصول اليه
		a2 = 2;
		a3 = 3;
		a4 = 4;
	}
}

class Dog extends Animal{
	public static void main(String[] args){
		Animal animal = new Animal();
		// نستطيع الوصول الى تلك المتغيرات
		animal.a2 = 2; // (package) لان الصنفين في نفس الرزمة
		animal.a3 = 3; // و لانهم في نفس الرزمة  Animal لان هذا الصنف يرث صنف 
		animal.a4 = 4; // public لانه
	}
}


class Bird extends Animal{
	public static void main(String[] args){
		Animal animal = new Animal();
		
		// نستطيع الوصول الى تلك المتغيرات
		animal.a3 = 3; //  protected و المتغير  Animal لان هذا الصنف يرث صنف 
		animal.a4 = 4; // public لانه
	}
}

public class Snake{
	public static void main(String[] args){
		Animal animal = new Animal();
		// نستطيع الوصول الى تلك المتغيرات
		animal.a4 = 4; // public لانه
	}
}

مغيرات وصول الاصناف (classes access modifiers)

عام public

عند تعريف الاصناف ويسبقها كلمة public نستطيع استخدام هذا الصنف في كل البرنامج.

فمثلا كما في المثال: نستطيع استخدام الصنف Animal داخل كل الاصناف سواء ان نورثه او ننشأ كائن من نوع ال Animal في اي من الاصناف (Animal, Bird, Dog, Sparrow).

الوضع الافتراضي default

الوضع الافتراضي هو عندما لا نستخدم اي من المغيرات ويكون نطاق استخدام الصنف هو داخل الرزمة (package) المعرف بداخلها.

فمثلا:نستطيع استخدام الصنف Dog داخل (Animal, Dog) فقط لانهم في نفس الرزمة (package).

مغيرات وصول access modifiers الطرق والمتغيرات

ما طبقناه على المتغيرات/ الصفات (attributes) في المثال ينطبق على الطرق (methods)

عام public

نستطيع الى/استخدام ذلك المتغير في كل الاصناف مثل a4.

محمي protected

نستطيع الوصول ذلك المتغير داخل الحزمة/الرزمة package المعرف فيها، وداخل الاصناف من نوع الابن (child class) لذلك استطعنا ان نستخدم المتغير a3 في الصنف Dog لانه في نفس الرزمة (package) و استطعنا ان نستخدمه داخل الصنف Bird لانه يرث الصنف Animal رغم اختلاف الرزمة (package)

الوضع الافتراضي default

نستطيع الوصول ذلك المتغير داخل الحزمة /الرزمة package المعرف فيها، لذلك استطعنا ان نصل الى المتغير a2 داخل الصنف Dog

خاص private

نستطيع استخدام المتغيرات والطرق من نوع private داخل الصنف المعرف فيه فقط مثل المتغير a1


guest
0 تعليقات
Inline Feedbacks
اظهر كل التعليقات