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

الحقول في Java

ضع حقلًا int اسمه fill داخل الفئة Cup في Cup.java. في Shelf.java ابنِ كوبًا واحدًا بـ Cup c = new Cup();، خزّن رقمًا بـ c.fill = 3;، ثم اطبع ذلك الحقل بـ System.out.println(c.fill);. ترجم الملفين ونفّذ java Shelf. يجب أن تظهر الشاشة سطرًا واحدًا: 3. الحقل يحفظ البيانات على ذلك الكائن الواحد. تصل إليه عبر المتغير الذي يسمّي الكائن. تخزين ذلك القيمة وقراءتها على الكائن هو ما تعلّمه هذه الصفحة.

مكان للبيانات على الكائن

في صفحة الكائنات، كان beep يطبع فقط. لم يحفظ رقمًا لوقت لاحق. الحقل اسم تعلنه داخل الفئة، ويمكن لكل كائن أن يحمل قيمته الخاصة فيه. بعد أن يبني new الكائن، تعطّي الحقل قيمة عبر متغير الكائن، ثم يمكنك طباعته.
أنشئ Cup.java أولًا. سطر public class هو public class Cup. لا تُبقِ اسم فئة قديمًا Chip أو Badge هنا. داخل أقواس الفئة المجعدة اكتب سطر حقل واحد: int fill;. لا توجد دالة في هذا الصندوق الأول. لا يوجد main في Cup.java على هذه الصفحة. احفظ قبل الترجمة.

Cup with fill field

java
public class Cup {
    int fill;
}

Shelf يعطي fill قيمة ثم يطبعه

أنشئ Shelf.java في المجلد نفسه. سطر public class هو public class Shelf. داخل main اكتب ثلاثة أسطر بالترتيب: Cup c = new Cup();، ثم c.fill = 3;، ثم System.out.println(c.fill);. السطر الأول يبني الكائن. الثاني يخزّن 3 في fill لذلك الكائن. الثالث يطبع الرقم المخزَّن.

Shelf sets and prints fill

java
public class Shelf {
    public static void main(String[] args) {
        Cup c = new Cup();
        c.fill = 3;
        System.out.println(c.fill);
    }
}

من المجلد الذي يحوي الملفين، نفّذ javac Cup.java Shelf.java. يمكنك ترجمة Cup.java أولًا ثم Shelf.java عندما يكتمل الاثنان. عندما تتطابق الأقواس والدعامات والفواصل المنقوطة، لا يكتب javac سطرًا من عنده. ثم نفّذ java Shelf — لا java Shelf.java، ولا java Cup. احذف نهاية .java من أمر التشغيل. ابدأ الفئة التي تحمل main. الأوامر نفسها تعمل على Windows وعلى macOS.
يجب أن يطبع البرنامج سطرًا واحدًا ويتوقف: 3. لا يطلب منك الكتابة. إذا انتظر الطرفية إدخال لوحة المفاتيح، فما زال استدعاء nextLine من تمرين أقدم في أحد الملفات. احذف ذلك الاستدعاء وأبقِ الأسطر الثلاثة أعلاه في Shelf، مع حقل fill في Cup.
امشِ التشغيل مرة. تبدأ Java من Shelf.main. يبني new Cup() كائنًا واحدًا ويخزّنه في c. الإسناد c.fill = 3 يكتب 3 في حقل ذلك الكائن. println(c.fill) يقرأ الحقل نفسه ويطبع 3. الرقم على الشاشة هو القيمة المخزَّنة على الكائن، لا طباعة ثابتة لسلسلة مثل "ok".
اسم الحقل fill يُعلن مرة واحدة في الفئة. كل كائن يُبنى من Cup يحصل على فتحته الخاصة لذلك الاسم. عندما تكتب c.fill، تسمّي الكائن أولًا، ثم الفتحة على ذلك الكائن. ذلك الترتيب — الكائن، ثم الحقل — هو الشكل الذي تبقيه هذه الصفحة.

الفئة والكائن والحقل جنبًا إلى جنب

اقرأ الأسماء الثلاثة مرة في جدول صغير. سطر الحقل يمر دائمًا عبر كائن في هذه الصفحة.

📊 class object field

الاسم ما هو في هذه الصفحة
Cup الفئة / النوع في Cup.java
c كائن واحد بُني بـ new Cup()
c.fill الـ int المخزَّن على ذلك الكائن

كتابة Cup.fill = 3; بلا كائن لا تطابق شكل المبتدئ في هذه الصفحة. الحقل يخص كل كائن بعد new. ابنِ أولًا، ثم أسند عبر المتغير. كتابة new Cup(); وحدها بلا تخزين النتيجة تتركك بلا اسم لـ fill. أبقِ Cup c = new Cup(); ثم c.fill = 3;.
عرض كائنات متبقٍ قد يشوّش المجلد. ملف ما زال يستدعي c.beep(); مع فئة Chip هو الدرس السابق. لهذه الصفحة أبقِ Cup وShelf وحقل fill. لا تحتاج beep هنا.
إذا طبعت c نفسه بـ System.out.println(c);، فالشاشة لن تُظهر 3 نظيفًا. تطبع نص كائن افتراضي. لرؤية الرقم المخزَّن، اطبع c.fill.

كوبان يحتفظان بقيمتي fill منفصلتين

يمكنك بناء كائنين من Cup. لكل منهما fill خاص به. تغيير أحدهما لا يغيّر الآخر.
في Shelf يمكنك كتابة Cup a = new Cup(); وCup b = new Cup();، ثم a.fill = 2; وb.fill = 9;، ثم طباعة a.fill وb.fill. بعد javac Cup.java Shelf.java وjava Shelf يجب أن تُظهر الشاشة 2 في سطر و9 في السطر التالي. الكائنان يشتركان نص الفئة الذي يعلن fill، لكن كل كائن يحمل رقمه الخاص.
إذا أظهرت كلتا الطباعتين القيمة نفسها وأنت تقصد رقمين مختلفين، تحقق أنك أسندت الحقلين وأنك لم تكتب Cup b = a;. ذلك السطر يجعل b يشير إلى الكائن نفسه الذي يشير إليه a، فالاسمَان يشتركان في fill واحد. في هذه الصفحة استخدم تعبيرَي new Cup() عندما تريد قيمتي fill منفصلتين.
لا تحتاج برنامجًا ثالثًا في صندوق لذلك التمرين. عدّل Shelf بعناية، أعد الترجمة، ونفّذ مرة أخرى. ثم يمكنك إعادة صندوق الكوب الواحد إن أردت الشكل الأول للاختبار.

ماذا تضيف constructors لاحقًا

هذه الصفحة تسند الحقل بعد new بسطر منفصل: c.fill = 3;. صفحة لاحقة — constructors — ستُظهر طريقة أخرى لوضع قيم البداية حين يُبنى الكائن. ابقَ هنا مع الحقل البسيط والإسناد بعد new. لا تخترع دالة constructor في هذه الصفحة.
توجد قيم افتراضية للحقول التي لا تسندها أبدًا: حقل int يبدأ عند 0. إذا طبعت c.fill قبل أي إسناد، يمكن أن تُظهر الشاشة 0. هذه الصفحة ما زالت تعلّم الإسناد الذي تكتبه بنفسك، فأبقِ c.fill = 3; قبل الطباعة في العرض الرئيسي.
إذا لم يجد javac الرمز Cup أثناء ترجمة Shelf.java، تحقق أن Cup.java بجوار Shelf.java وأن سطر الفئة هو public class Cup. إذا أظهرت الشاشة 0 وأنت تتوقع 3، فقد يكون سطر الإسناد ناقصًا أو يعمل بعد الطباعة — ضع c.fill = 3; فوق println(c.fill).

قبل constructors

يمكنك إعلان int fill; داخل Cup، وبناء Cup c = new Cup();، وإسناد c.fill = 3;، وطباعة c.fill من Shelf. ترجم الملفين ونفّذ java Shelf. تظهر الشاشة 3. يمكن لكائنين حمل قيمتي fill مختلفتين. الصفحة التالية هي constructors، حيث تبدأ وضع القيم في لحظة بناء new للكائن.

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

جاهز للبدء

اختبر معرفتك

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

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

📝 التعليمات

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