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

الوصول

اكتب فئة Lid بحقل خاص int seal ومنشئ Lid(int n) يضع seal = n; ومتد عام int Read() يعيد seal. في Pine أبقِ Main وابنِ غطاءً واحدًا بـ Lid L = new Lid(9); ثم اكتب L.Read(). أبقِ النوعين في ملف التعليم نفسه حتى يبقى dotnet run بسيطًا. نفّذ بـ dotnet run. يجب أن تُظهر الشاشة سطرًا واحدًا: 9. الحقل يبقى خاصًا بـ Lid. المتد العام هو كيف يحصل Pine على الرقم. أبقِ اسم الفئة العامة البادئة Pine.

من يرى العضو

في صفحة static استدعيت Cup.Mark() عبر اسم الفئة. هنا الكلمات الجديدة هما private وpublic. الحقل private يُرى داخل فئته فقط. الفئات الأخرى في الملف نفسه — بما فيها Pine — لا تستطيع كتابة L.seal عندما يكون seal خاصًا. متد public ما زال يعمل من Pine ويعيد القيمة المخفية.
افتح ملف Pine. اسم فئة البدء يبقى Pine. هذه الصفحة لا تعيد تسمية البادئ. احذف أي بقايا Cup.Mark(); إن كان عرض static كل ما لديك في Main. احذف أي بقايا فئة Cup. احذف أي بقايا Jar. احذف أي سطر ReadLine. الملف الذي تحتفظ به لا ينتظر الكتابة.
خارج أقواس Pine — ما زلت في الملف نفسه — اكتب public class Lid. داخل الأقواس أعلن private int seal;. اكتب المنشئ Lid(int n) { seal = n; }. ثم اكتب public int Read() { return seal; }. لا يوجد Main داخل Lid في هذه الصفحة. احفظ الملف قبل التشغيل.
يحتاج الحقل إلى private حتى لا يمسك Pine بـ seal بالاسم. يحتاج المتد إلى public حتى يستطيع Pine استدعاء Read. نوع الإرجاع int لأن Read يعيد الرقم المخزّن للمتصل. أبقِ return seal; داخل جسم المتد.

Lid with private seal

csharp
using System;

public class Lid
{
    private int seal;

    Lid(int n)
    {
        seal = n;
    }

    public int Read()
    {
        return seal;
    }
}

Pine يبني غطاءً ويستدعي Read

Pine يحتفظ بـ public static void Main(). داخل Main اكتب سطرين بالترتيب: Lid L = new Lid(9);، ثم Console.WriteLine(L.Read());. المنشئ يخزّن 9 في الحقل الخاص. استدعاء L.Read() يعيد تلك القيمة. الكتابة تعرضها. أنت لا تكتب Cup.Mark(); في هذه الصفحة. ذلك كان درس static.

Pine one Read

csharp
using System;

public class Pine
{
    public static void Main()
    {
        Lid L = new Lid(9);
        Console.WriteLine(L.Read());
    }
}

public class Lid
{
    private int seal;

    Lid(int n)
    {
        seal = n;
    }

    public int Read()
    {
        return seal;
    }
}

اقرأ الملف المحفوظ من الأعلى. using System; يجهّز الأسماء القصيرة. public class Pine هو البادئ. public static void Main() حيث يبدأ وقت التشغيل. التعبير new Lid(9) يبني غطاءً ويخزّن 9 في seal. استدعاء L.Read() يدخل المتد العام على ذلك الكائن. الجسم يعيد seal، فتعود القيمة 9 إلى Main. ثم Main يكتب قيمة الإرجاع وتظهر الشاشة 9.
شغّل بـ dotnet run. البرنامج يكتب سطرًا واحدًا ويتوقف. لا ينتظر أن تكتب. إن انتظر dotnet run، ما زال ReadLine في الملف. احذف ذلك السطر وأبقِ new Lid(9) وConsole.WriteLine(L.Read()); في Pine، مع private int seal وpublic int Read() في Lid. الشاشة تظهر 9. إن ظهرت 2، قد يعمل عرض tally ببقايا Cup. إن فشل البناء على L.seal، حاولت قراءة الحقل الخاص من Main — انتقل إلى L.Read().
إن كتبت Console.WriteLine(L.seal); بينما seal private، يرفض البناء. هذا الرفض هو الدرس. أبقِ الباب العام: L.Read(). إن تركت seal بدون private، الوصول الافتراضي في هذا الشكل البسيط قد يجمّع من Pine بطرق لا تريد هذه الصفحة تعليمها — ضع private على الحقل عن قصد.

مقارنة مع Cup static ومع حقول عامة صريحة

في صفحة static، كان Cup.tally يُبلَغ عبر اسم الفئة بعد عمل static. هذه الصفحة تخفي seal عن Pine وتفتح فقط Read. بقايا Cup.Mark(); Cup.Mark(); Console.WriteLine(Cup.tally); درس مختلف. لهذه الصفحة أبقِ Lid وPine وL.Read().
يمكنك جعل كل حقل public وكتابة L.seal من Main. هذا الدرس يختار private حتى يملك الكائن التخزين ويسأل Pine عبر متد. كتابة Console.WriteLine(L); وحدها لا تُظهر 9 نظيفة. اكتب Console.WriteLine(L.Read()); لترى الرقم المُعاد.

غطاءان يحتفظان بختمين خاصين منفصلين

كل new Lid(...) يحصل على seal خاص به. تستطيع كتابة Lid a = new Lid(3); وLid b = new Lid(8);، ثم كتابة a.Read() وb.Read(). كلمة private لا تشارك ختمًا واحدًا بين الكائنات. إنما تمنع الفئات الأخرى من تسمية الحقل.

Pine two Lids

csharp
using System;

public class Pine
{
    public static void Main()
    {
        Lid a = new Lid(3);
        Lid b = new Lid(8);
        Console.WriteLine(a.Read());
        Console.WriteLine(b.Read());
    }
}

public class Lid
{
    private int seal;

    Lid(int n)
    {
        seal = n;
    }

    public int Read()
    {
        return seal;
    }
}

شغّل مجددًا بـ dotnet run. يجب أن تُظهر الشاشة 3 في سطر و8 في التالي. كل Read أعاد الحقل الخاص لذلك الكائن. إن ظهر الرقم نفسه في السطرين، تحقق أنك استخدمت استدعاءين new Lid(...) بوسائط مختلفة. إن ظهر 9 واحدًا، قد تكون على عرض غطاء واحد — ذلك جيد لنقطة التفتيش الأولى؛ استخدم ملف الغطاءين عندما تريد الفحص الثاني.
إن اشتكى البناء من Read، تأكد أن رأس المتد يتضمن public وint. إن كان Main ما زال يستدعي Cup.Mark()، احذف بقايا static ذلك حتى يُظهر درس access أرقام الغطاء بدل tally.

ما تتركه هذه الصفحة لـ namespaces

تستخدم هذه الصفحة private وpublic حتى تخفي فئة حقلًا وتشارك قيمة عبر متد. صفحة لاحقة — namespaces — تجمع الأنواع تحت اسم حتى تبقى البرامج الأكبر منظمة. ابقَ مع access هنا. لا تخترع غلاف namespace في هذه الصفحة إلا إن كنت تعرفه مسبقًا؛ هدف الدرس private على الحقل وpublic على Read.
لا تُدخل Lid داخل أقواس Pine. في هذه الصفحة تجلس الفئتان كأختين في الملف. إن لم يجد البناء Lid أثناء تجميع Pine، تحقق أن public class Lid في الملف نفسه. إن ظهرت الشاشة 0، قد يفتقد المنشئ التخزين — أبقِ Lid(int n) { seal = n; } واستدعِ Read بعد new.

تستطيع إعلان private int seal;، وكتابة Lid(int n) { seal = n; } وpublic int Read() { return seal; }، ومن Pine.Main تشغيل Lid L = new Lid(9);، ثم كتابة L.Read(). نفّذ بـ dotnet run. الشاشة تظهر 9. الحقل الخاص بقي داخل Lid. المتد العام سلّم الرقم إلى Pine. فكّر في private كدرج مغلق وRead كالطريق المسموح للنظر داخلًا. Pine يبقى الباب الذي تفتحه بـ dotnet run. الصفحة التالية namespaces، حيث تجلس الأنواع تحت اسم مجموعة حتى تبقى الملفات الأكبر واضحة.
أبقِ private على الحقل. أبقِ public على Read. أبقِ الاستدعاء L.Read() بدل L.seal. هذه العادات الثلاث هي نقطة التفتيش قبل المتابعة. أبقِ عروض بقايا Cup.Mark() خارج Main حتى لا تُظهر الشاشة tally بالخطأ.

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

جاهز للبدء

اختبر معرفتك

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

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

📝 التعليمات

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