Programming Basics SQL HTML CSS JavaScript Python C++ Java JavaFX Swing Problem Solving English English Conversations Computer Fundamentals 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.