124 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			124 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
|   | --- | |||
|  | title: Static | |||
|  | localeTitle: ثابتة | |||
|  | --- | |||
|  | # ثابتة
 | |||
|  | 
 | |||
|  | عندما تقوم بتعريف متغير أو طريقة بأنها ثابتة ، فإنها تنتمي إلى الفئة ، بدلاً من نسخة محددة. هذا يعني أنه يوجد مثيل واحد فقط من عضو ثابت ، حتى إذا قمت بإنشاء كائنات متعددة للفئة ، أو إذا لم تقم بإنشاء أي. ستتم مشاركتها بواسطة جميع الكائنات. | |||
|  | 
 | |||
|  | يمكن استخدام الكلمة الأساسية الثابتة مع المتغيرات والطرق ومقاطع التعليمات البرمجية والفئات المتداخلة. | |||
|  | 
 | |||
|  | ## المتغيرات الثابتة
 | |||
|  | 
 | |||
|  | **_مثال:_** | |||
|  | 
 | |||
|  |  `public class Counter {  | |||
|  |   public static int COUNT = 0;  | |||
|  |   Counter() {  | |||
|  |     COUNT++;  | |||
|  |   }  | |||
|  |  }  | |||
|  | `  | |||
|  | 
 | |||
|  | ستتم مشاركة المتغير `COUNT` بواسطة جميع كائنات تلك الفئة. عندما نقوم بإنشاء كائنات من صف مكافحة لدينا في الرئيسي ، والوصول إلى متغير ثابت. | |||
|  | 
 | |||
|  |  `public class MyClass {  | |||
|  |   public static void main(String[] args) {  | |||
|  |     Counter c1 = new Counter();  | |||
|  |     Counter c2 = new Counter();  | |||
|  |     System.out.println(Counter.COUNT);  | |||
|  |   }  | |||
|  |  }  | |||
|  |  // Outputs "2"  | |||
|  | `  | |||
|  | 
 | |||
|  | Outout هو 2 ، لأن متغير `COUNT` ثابت ويتم زيادته بمقدار واحد في كل مرة يتم إنشاء كائن جديد لفئة Counter. يمكنك أيضًا الوصول إلى المتغير الثابت باستخدام أي كائن من هذه الفئة ، مثل `c1.COUNT` . | |||
|  | 
 | |||
|  | ## طرق ثابتة
 | |||
|  | 
 | |||
|  | ينتمي الأسلوب الثابت إلى الفئة بدلاً من الحالات. وبالتالي ، يمكن استدعائها دون إنشاء مثيل للفئة. يتم استخدامه لتغيير محتويات ثابتة للفئة. هناك بعض القيود على الأساليب الثابتة: | |||
|  | 
 | |||
|  | 1.  لا يمكن للطريقة الثابتة استخدام أعضاء غير ثابت (متغيرات أو وظائف) للفئة. | |||
|  | 2.  لا يمكن للطريقة الساكنة استخدام `this` الرئيسية أو `super` . | |||
|  | 
 | |||
|  | **_مثال:_** | |||
|  | 
 | |||
|  |  `public class Counter {  | |||
|  |   public static int COUNT = 0;  | |||
|  |   Counter() {  | |||
|  |     COUNT++;  | |||
|  |   }  | |||
|  |   | |||
|  |   public static void increment(){  | |||
|  |     COUNT++;  | |||
|  |   }  | |||
|  |  }  | |||
|  | `  | |||
|  | 
 | |||
|  | يمكن أيضًا استدعاء أساليب ثابتة من مثيل الطبقة. | |||
|  | 
 | |||
|  |  `public class MyClass {  | |||
|  |   public static void main(String[] args) {  | |||
|  |     Counter.increment();  | |||
|  |     Counter.increment();  | |||
|  |     System.out.println(Counter.COUNT);  | |||
|  |   }  | |||
|  |  }  | |||
|  |  // Outputs "2"  | |||
|  | `  | |||
|  | 
 | |||
|  | هو 2 الإخراج لأنه يحصل زيادة بواسطة `increament()` الأسلوب `increament()` . على غرار المتغيرات الثابتة ، يمكن أيضًا الوصول إلى الطرق الثابتة باستخدام متغيرات الحالة. | |||
|  | 
 | |||
|  | ## كتل ثابتة
 | |||
|  | 
 | |||
|  | يتم استخدام كتل التعليمات البرمجية الثابتة لتهيئة المتغيرات الثابتة. يتم تنفيذ هذه الكتل مباشرة بعد إعلان المتغيرات الثابتة. | |||
|  | 
 | |||
|  | **_مثال:_** | |||
|  | 
 | |||
|  |  `public class Saturn {  | |||
|  |   public static final int MOON_COUNT;  | |||
|  |   | |||
|  |   static {  | |||
|  |     MOON_COUNT = 62;  | |||
|  |   }  | |||
|  |  }  | |||
|  | `  | |||
|  | 
 | |||
|  |  `public class Main {  | |||
|  |   public static void main(String[] args) {  | |||
|  |     System.out.println(Saturn.MOON_COUNT);  | |||
|  |   }  | |||
|  |  }  | |||
|  |  // Outputs "62"  | |||
|  | `  | |||
|  | 
 | |||
|  | الإخراج هو 62 ، لأنه يتم تعيين متغير `MOON_COUNT` تلك القيمة في كتلة ثابتة. | |||
|  | 
 | |||
|  | ## فئات متداخلة ثابتة
 | |||
|  | 
 | |||
|  | يمكن أن يكون للفئة فئة متداخلة ثابتة يمكن الوصول إليها باستخدام اسم الفئة الخارجية. | |||
|  | 
 | |||
|  | **_مثال:_** | |||
|  | 
 | |||
|  |  `public class Outer {  | |||
|  |   | |||
|  |   public Outer() {  | |||
|  |   }  | |||
|  |   | |||
|  |   public static class Inner {  | |||
|  |     public Inner() {  | |||
|  |     }  | |||
|  |   }  | |||
|  |  }  | |||
|  | `  | |||
|  | 
 | |||
|  | في المثال أعلاه ، يمكن الوصول إلى الطبقة `Inner` مباشرة كعضو ثابت في الفصل `Outer` . | |||
|  | 
 | |||
|  |  `public class Main {  | |||
|  |   public static void main(String[] args) {  | |||
|  |     Outer.Inner inner = new Outer.Inner();  | |||
|  |   }  | |||
|  |  }  | |||
|  | `  | |||
|  | 
 | |||
|  | واحدة من حالات الاستخدام للدروس المتداخلة الثابتة في [نموذج البناء](https://en.wikipedia.org/wiki/Builder_pattern#Java) المستخدمة بشكل شائع في جافا. |