جاري التحميل...

static في Java

اكتب فئة Tag في Tag.java بمتد static بالشكل static void ping() يطبع ok. في Yard.java استدعِ من main بالشكل Tag.ping(); ولا تكتب new Tag() على هذه الصفحة. ترجم الملفين ونفّذ java Yard. يجب أن تظهر الشاشة سطرًا واحدًا: ok. المتد ينتمي إلى اسم الفئة Tag، لا إلى متغير كائن. الاستدعاء عبر اسم الفئة هو ما تعلّمه هذه الصفحة.

متد على اسم الفئة

في صفحة متدات الكائن كتبت j.bump() بعد new Jar(3). ذلك الاستدعاء احتاج كائنًا. متد static لا يحتاجه. تكتب Tag.ping(); باسم الفئة. تنفّذ Java ذلك المتد بلا بناء كائن Tag أولًا على هذه الصفحة.
أنشئ Tag.java أولًا. سطر public class هو public class Tag. لا تُبقِ اسم فئة قديمًا Jar أو Tin هنا. داخل الأقواس المجعدة اكتب متدًا واحدًا:
static void ping() { System.out.println("ok"); }
لا يوجد حقل ولا مُنشئ في العرض الأول. لا يوجد main في Tag.java. احفظ قبل الترجمة. كلمة static تجلس في رأس المتد قبل void. بلا static، لن يطابق استدعاء لاحق Tag.ping(); من Yard شكل متد الكائن الذي تريده هذه الصفحة.

Tag with static ping

java
public class Tag {
    static void ping() {
        System.out.println("ok");
    }
}

Yard يستدعي Tag.ping

أنشئ Yard.java في المجلد نفسه. سطر public class هو public class Yard. داخل main اكتب استدعاءً واحدًا: Tag.ping();. لا تكتب Tag t = new Tag(); على هذه الصفحة. لا تجعل مسار الدرس t.ping();. اسم الفئة قبل النقطة يكفي.
أبقِ Yard الفئة التي تحمل main. لا تضع main داخل Tag لهذا الدرس. إذا بقي ملف Desk من صفحة متدات الكائن في المجلد، لا تشغّل java Desk لهذا الدرس — نفّذ java Yard بعد ترجمة Tag.java وYard.java.

Yard calls Tag.ping

java
public class Yard {
    public static void main(String[] args) {
        Tag.ping();
    }
}

من المجلد الذي يحوي الملفين، نفّذ javac Tag.java Yard.java. يمكنك ترجمة Tag.java أولًا ثم Yard.java عندما يكتمل الاثنان. عندما تتطابق الأقواس والدعامات والفواصل المنقوطة، لا يكتب javac سطرًا من عنده. ثم نفّذ java Yard — لا java Yard.java، ولا java Tag. احذف نهاية .java من أمر التشغيل. ابدأ الفئة التي تحمل main. الأوامر نفسها تعمل على Windows وعلى macOS.
يجب أن يطبع البرنامج سطرًا واحدًا ويتوقف: ok. لا يطلب منك الكتابة. إذا انتظر الطرفية إدخال لوحة المفاتيح، فما زال استدعاء nextLine من تمرين أقدم في أحد الملفات. احذف ذلك الاستدعاء وأبقِ Tag.ping(); في Yard، مع static void ping في Tag.
امشِ التشغيل مرة. تبدأ Java من Yard.main. الاستدعاء Tag.ping() يجد المتد static على الفئة Tag وينفّذ جسمه. الجسم يطبع ok. لم يُبنَ كائن. تظهر الشاشة ok. لا يجب أن يطبع شيء آخر. إذا رأيت 4 أو 5، فما زلت تشغّل برنامج Desk قديمًا من درس bump.
إذا كتبت ping(); بلا Tag. أمامه داخل Yard.main، يرفض javac في هذا الشكل. المتد static ما زال يحتاج اسم فئته (أو أسلوب استيراد دقيقًا لا تستخدمه بعد). أبقِ Tag.ping();. إذا وضعت void بلا static، فاستدعاء Tag.ping(); نوع خاطئ لمتد كائن — أعد static. يجب أن يبدو الرأس مثل static void ping()، لا void ping() وحده، ولا static int ping() لعرض الطباعة هذا.

Tag.ping و j.bump جنبًا إلى جنب

جدول قصير يبقي شكلي الاستدعاء واضحين.

📊 static vs instance call

الاستدعاء هل يحتاج كائنًا أولًا؟
Tag.ping(); لا — اسم الفئة يكفي
j.bump(); نعم — بعد Jar j = new Jar(3);
static void ping() متد على الفئة
void bump() متد على كل كائن
الجدول تذكير فقط. السطر الذي تبقيه على هذه الصفحة هو Tag.ping(); في Yard، مع static void ping() في Tag.

مقارنة مع متدات الكائن

في صفحة متدات الكائن غيّر j.bump() قيمة fill لـ jar واحد. ذلك ما زال يعمل. هذه الصفحة لا تغيّر حقلًا. تطبع فقط ok من متد static حتى ترى الاستدعاء باسم الفئة. عرض متبقٍ Jar j = new Jar(3); j.bump(); درس مختلف. لهذه الصفحة أبقِ Tag وYard وTag.ping();.
ما زال بإمكانك بناء كائنات في أيام أخرى. هذا الدرس يختار مسار static عمدًا. لا تخلط j.bump() وTag.ping() في عرض Yard واحد على هذه الصفحة. مسار واضح واحد يكفي: static على المتد، اسم الفئة قبل الاستدعاء، طباعة ok. حين تحتاج لاحقًا الأسلوبين في برنامج واحد، أبقِ كل استدعاء صادقًا — الكائن قبل متد الكائن، اسم الفئة قبل المتد static — حتى يرى القارئ أي نوع قصدت.

لا تحتاج new Tag لهذا الاستدعاء

لأن ping من نوع static، لا يخصص Yard كائن Tag قبل الاستدعاء. كتابة Tag t = new Tag(); ثم t.ping(); قد تترجم لمتد static في كثير من الترتيبات، لكن ذلك ليس شكل هذه الصفحة. ابقَ مع Tag.ping(); وحده. إذا أظهرت الشاشة 4 أو 5، فما زال عرض Desk bump قديمًا يعمل — انتقل إلى java Yard.
إذا قال javac إنه لا يجد الرمز ping على Tag، تحقق أن رأس المتد يحوي static وأن الملفين في المجلد نفسه. إذا شغّلت java Tag ولم يفعل شيئًا مفيدًا، فقد بدأت الفئة الخطأ — ابدأ Yard التي تحمل main.

ما يبقى لـ access

هذه الصفحة تستخدم فئة public ومتدًا static بظهور الحزمة في المجلد نفسه. صفحة لاحقة — access — تُظهر كلمات مثل public وprivate على الأعضاء. ابقَ هنا مع الاستدعاء static. لا تخترع private static على هذه الصفحة إلا إن كنت تعرفه مسبقًا؛ هدف الدرس هو Tag.ping(); مع static void ping().
حين يبقى في المجلد Jar.java أو Desk.java، اتركهما أو احذفهما فقط إن أربكا أمر الترجمة. نفّذ java Yard بعد ترجمة زوج Tag وYard من هذا الدرس.

قبل access

يمكنك كتابة static void ping() { System.out.println("ok"); } في Tag، ومن Yard استدعاء Tag.ping(); بلا كائن. ترجم الملفين ونفّذ java Yard. تظهر الشاشة ok. عمل المتد static على اسم الفئة. الصفحة التالية هي access، حيث تتحكم في أي الأسماء قد تراها الفئات الأخرى.
أبقِ static على المتد. أبقِ اسم الفئة قبل الاستدعاء. أبقِ main في Yard. هذه العادات الثلاث هي نقطة التحقق لهذه الصفحة قبل أن تنتقل.

🧠 اختبر معرفتك

جاهز للبدء

اختبر معرفتك

تحدى نفسك مع هذا الاختبار التفاعلي واكتشف مدى فهمك للموضوع

❓
6
الأسئلة
🎯
70%
للنجاح
♾️
∞
الوقت
🔄
∞
المحاولات

📝 التعليمات

  • اقرأ كل سؤال بعناية
  • اختر أفضل إجابة لكل سؤال
  • يمكنك إعادة الاختبار عدة مرات كما تريد
  • سيتم عرض تقدمك في الأعلى