Programming Basics SQL HTML CSS JavaScript React Python C++ Java JavaFX Swing Problem Solving English English Conversations Computer Fundamentals Linux Learn Typing

Javaمثال حول الكلمة static في جافا

في هذا المثال سنقوم بتعريف كلاس إسمه Example يحتوي على الأشياء التالية:

  1. متغير إسمه a معرف كـ static.
  2. دالة إسمها print تعرض قيمة المتغير a.
  3. دالة إسمها staticPrint تعرض أيضاً قيمة المتغير a لكنها معرفة كـ static.

بعدها سنقوم بتغير و عرض قيمة المتغير a بعدة طرق.

Example.java
public class Example {
// Example.a إذاً يمكننا الوصول إليه من خلال كائن أو من أي مكان مباشرةً بهذا الشكل .static كـ a قمنا بتعريف المتغير
public static int a;
// Example هذه الدالة لا يمكن استدعاءها إلا من خلال كائن من الكلاس
public void print() {
System.out.println( "a: " +a );
}
// Example.staticPrint(); هذه الدالة يمكن استدعائها مباشرةً من أي مكان بهذا الشكل
public static void staticPrint() {
System.out.println( "a: " +a );
}
}
public class Example { // Example.a إذاً يمكننا الوصول إليه من خلال كائن أو من أي مكان مباشرةً بهذا الشكل .static كـ a قمنا بتعريف المتغير public static int a; // Example هذه الدالة لا يمكن استدعاءها إلا من خلال كائن من الكلاس public void print() { System.out.println( "a: " +a ); } // Example.staticPrint(); هذه الدالة يمكن استدعائها مباشرةً من أي مكان بهذا الشكل public static void staticPrint() { System.out.println( "a: " +a ); } }

Main.java
public class Main {
public static void main(String[] args) {
// Example من الكلاس e2 و e1 هنا قمنا بإنشاء كائنين
Example e1 = new Example();
Example e2 = new Example();
Example.a = 10; // Example مباشرةً من الكائن الكلاس a هنا قمنا بإعطاء قيمة لـ
Example.staticPrint(); // static التي يمكننا استدعائها مباشرةً من الكلاس لأن نوعها staticPrint() من خلال الدالة a هنا قمنا بعرض قيمة
e1.staticPrint(); // أيضاً e1 التي يمكننا استدعائها من الكائن staticPrint() من خلال الدالة a هنا قمنا بعرض قيمة
e2.staticPrint(); // أيضاً e2 التي يمكننا استدعائها من الكائن staticPrint() من خلال الدالة a هنا قمنا بعرض قيمة
e1.a = 22; // e1 من خلال الكائن a هنا قمنا بتغير قيمة
e1.print(); // e1 التي وصلنا إليها من خلال الكائن print() ثم قمنا بعرضها من خلال الدالة
e2.a = 75; // e2 من خلال الكائن a هنا قمنا بتغير قيمة
e2.print(); // e2 التي وصلنا إليها من خلال الكائن print() ثم قمنا بعرضها من خلال الدالة
}
}
public class Main { public static void main(String[] args) { // Example من الكلاس e2 و e1 هنا قمنا بإنشاء كائنين Example e1 = new Example(); Example e2 = new Example(); Example.a = 10; // Example مباشرةً من الكائن الكلاس a هنا قمنا بإعطاء قيمة لـ Example.staticPrint(); // static التي يمكننا استدعائها مباشرةً من الكلاس لأن نوعها staticPrint() من خلال الدالة a هنا قمنا بعرض قيمة e1.staticPrint(); // أيضاً e1 التي يمكننا استدعائها من الكائن staticPrint() من خلال الدالة a هنا قمنا بعرض قيمة e2.staticPrint(); // أيضاً e2 التي يمكننا استدعائها من الكائن staticPrint() من خلال الدالة a هنا قمنا بعرض قيمة e1.a = 22; // e1 من خلال الكائن a هنا قمنا بتغير قيمة e1.print(); // e1 التي وصلنا إليها من خلال الكائن print() ثم قمنا بعرضها من خلال الدالة e2.a = 75; // e2 من خلال الكائن a هنا قمنا بتغير قيمة e2.print(); // e2 التي وصلنا إليها من خلال الكائن print() ثم قمنا بعرضها من خلال الدالة } }

سنحصل على النتيجة التالية عند التشغيل.

a: 10
a: 10
a: 10
a: 22
a: 75
a: 10 a: 10 a: 10 a: 22 a: 75

لا يمكنك وضع this عند استدعاء متغير نوعه static, فهنا مثلاً لا يمكنك أن تكتب this.a بدل a لأن الكلمة this تستخدم للإشارة إلى كائن محدد على عكس مبدأ الـ static.