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

الفئات في Java

الصنف نوع مسمّى تعلنه في ملف .java. ضع public class Badge في ملف اسمه Badge.java. داخل ذلك النوع اكتب دالة static قصيرة show تطبع ready. في ملف ثانٍ اسمه Desk.java ضع public class Desk مع main يستدعي Badge.show();. ترجم الملفين ثم نفّذ java Desk. يجب أن تظهر الشاشة سطرًا واحدًا: ready. لست تعدّ تنازليًا بالاستدعاء الذاتي هنا. تسمّي نوعًا في ملفه وتطلب من دالة ذلك النوع أن تطبع. ذلك النوع المسمّى الثاني — صنف ليس مجرد ملف البدء — هو ما تعلّمه هذه الصفحة.

النوع يعيش في ملفه

حتى صفحات الدوال، كادت كل العروض تبقي main والدوال المساعدة داخل public class واحدة. ذلك ما زال يعمل. هذه الصفحة تضيف عمدًا public class ثانية. Badge اسم نوع. لا يلزم أن يكون البرنامج الذي يبدأ. Desk هو البرنامج الذي يبدأ. كل public class تجلس في ملف يطابق اسمه اسم الصنف تمامًا، بما في ذلك الحروف الكبيرة.
أنشئ Badge.java أولًا. السطر الأول للنوع هو public class Badge. لا تكتب public class Desk داخل هذا الملف. لا تُبقِ اسم صنف قديمًا Ladder أو Gate هنا. المترجم يربط اسم public class باسم الملف. إذا كان الملف Badge.java والسطر يقول public class Ladder، يرفض javac.
داخل أقواس Badge المجعدة اكتب static void show(). الجسم طباعة واحدة: System.out.println("ready");. أبقِ void في هذه الصفحة. الدالة لا ترجع رقمًا. تكتب كلمة فقط. لا يوجد main في Badge.java في هذه الصفحة. ذلك مقصود. يمكن للصنف أن يحمل دوالًا دون أن يكون صنف البدء.
احفظ Badge.java قبل الترجمة. البرنامج المعبأ الأول هو ذلك الملف وحده.

Badge type with show

java
public class Badge {
    static void show() {
        System.out.println("ready");
    }
}

Desk يبدأ؛ Badge يطبع

أنشئ ملفًا ثانيًا في المجلد نفسه: Desk.java. سطر public class هو public class Desk. داخل main اكتب استدعاءً واحدًا: Badge.show();. ذلك الاستدعاء يسمّي النوع Badge، ثم نقطة، ثم الدالة show. لا تكتب show(); وحدها داخل Desk ما لم تعش show أيضًا في Desk. في هذه الصفحة show تخص Badge، لذا يحمل الاستدعاء اسم النوع.

Desk main calls Badge.show

java
public class Desk {
    public static void main(String[] args) {
        Badge.show();
    }
}

يجب أن يكون الملفان في المجلد نفسه حتى يراهما javac معًا. من ذلك المجلد نفّذ javac Badge.java Desk.java. يمكنك أيضًا ترجمة Badge.java أولًا ثم Desk.java؛ كلا الترتيبين يعمل عندما يكتمل الملفان. عندما تتوافق الأقواس والأقواس المجعدة والفواصل المنقوطة، لا يكتب javac سطرًا من عنده. ثم نفّذ java Desk — لا java Desk.java، ولا java Badge. احذف لاحقة .java من أمر التشغيل. ابدأ الصنف الذي يحمل main. نوعا الأوامر نفسهما يعملان على Windows وmacOS.
يجب أن يطبع البرنامج سطرًا ويتوقف: ready. لا يطلب منك الكتابة. إذا انتظر الطرفية إدخال لوحة المفاتيح، فما زال استدعاء nextLine من تمرين قديم في ملف. احذفه وأبقِ Badge.show(); في Desk مع دالة show في Badge.
سر على التشغيل مرة. تبدأ Java من Desk.main. الاستدعاء Badge.show() يدخل الدالة في النوع Badge. تلك الدالة تطبع ready وتعود. ثم ينتهي Desk. الكلمة على الشاشة جاءت من Badge، لا من println مكتوب داخل Desk نفسه. ذلك الفصل هو الفكرة: صنف يبدأ البرنامج؛ صنف آخر يملك المساعدة.

اسم الملف و public class يجب أن يتوافقا

اقرأ الاقتران مرة في جدول صغير. كل public class تملك اسم ملف.

📊 file, public class, role

الملف public class الدور في هذه الصفحة
Badge.java Badge نوع يحمل show
Desk.java Desk برنامج يحمل main

إذا أعدت تسمية الملف إلى badge.java بحرف b صغير بينما السطر ما زال يقول public class Badge، تعامل بعض الأنظمة عدم التوافق كخطأ. أبقِ الحرف الكبير B في الموضعين بهذا الشكل للمبتدئين. إذا وضعت public class Badge وpublic class Desk في الملف نفسه، يرفض javac: public class واحدة لكل ملف. أصناف المساعدة private في الملف نفسه تنتظر دورات لاحقة. هنا تبقي ملفين public.
خلط شائع هو تشغيل java Badge لأنك كتبت للتو Badge.java. ذلك الصنف بلا main في هذه الصفحة، لذا يفشل التشغيل في البدء. نفّذ java Desk. خلط آخر كتابة show(); داخل Desk بلا بادئة Badge. عندما توجد show فقط على Badge. عندئذ يبحث المترجم عن show داخل Desk ولا يجدها.
عروض الاستدعاء الذاتي المتبقية قد تشوّش المجلد. ملف ما زال اسمه Ladder.java وفيه down(3) برنامج آخر. أبقِ مجلد هذا الدرس مركّزًا على Badge.java وDesk.java وأنت تتعلم شكل الملفين. لا تحتاج down هنا.

ترجم النوع أولًا، ثم البادئ

يمكنك تمرين خطوة الترجمة بقطع أصغر. ترجم النوع وحده أولًا: javac Badge.java. ذلك الأمر يفحص Badge حتى لو لم يبدأ شيء بعد. يمكن لملف صنف أن يُترجم بلا main. ثم ترجم البادئ: javac Desk.java. إذا كان Badge مترجمًا مسبقًا في المجلد نفسه، يستطيع Desk حل اسم Badge في الاستدعاء. أخيرًا نفّذ java Desk وأكّد السطر الوحيد ready.
إذا قال javac Desk.java إنه لا يجد الرمز Badge، افحص ثلاثة أمور. يجب أن يحمل المجلد Badge.java أو الصنف المترجم Badge بجانب Desk.java. يجب أن يكتب الاستدعاء Badge بنفس الحروف الكبيرة للنوع. يجب أن يكون اسم الدالة بعد النقطة show مطابقًا للرأس في Badge.
كتابة System.out.println("Badge"); داخل Desk تطبع كلمة Badge. لا تستدعي الدالة على النوع. أبقِ Badge.show(); عندما تريد الطباعة التي تعيش في Badge.

ما لا تفعله هذه الصفحة بعد

هذه الصفحة لا تكتب new Badge(). إنشاء كائن من صنف هو الصفحة التالية. هنا الاستدعاء Badge.show() — دالة static على اسم النوع نفسه. لا تخزّن حقولًا على badge بعد أيضًا. الحقول تنتظر صفحة لاحقة في هذه الوحدة. العمل الآن فقط النوع المسمّى في ملفه، سطر public class المتوافق، واستدعاء يستخدم اسم ذلك النوع.
يمكنك تغيير الكلمة المطبوعة داخل show إلى set وإعادة ترجمة الملفين (أو على الأقل Badge.java، ثم تشغيل Desk من جديد). يجب أن تتبع الشاشة السلسلة التي وضعتها في Badge. يبقى Desk نفس الاستدعاء. طريقة أخرى لرؤية الفصل: عدّل دالة النوع، وأبقِ استدعاء البادئ.

قبل objects

يمكنك إعلان public class Badge في Badge.java، ووضع static void show() داخله، واستدعاء Badge.show(); من Desk.main. اسم الملف واسم public class يتوافقان. ترجم النوع والبادئ، ثم نفّذ java Desk. تظهر الشاشة السطر الذي تطبعه show. الصنف هو ذلك النوع المسمّى. الصفحة التالية objects؛ هناك تبني قيمة من صنف بـ new.

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

جاهز للبدء

اختبر معرفتك

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

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

📝 التعليمات

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