دسترسی
کلاسی بهنام Lid با فیلد خصوصی int seal، سازندهٔ Lid(int n) که seal = n; میگذارد، و متد عمومی int Read() که seal را برمیگرداند بنویسید. در Pine، Main را نگه دارید و با Lid L = new Lid(9); یک lid بسازید، بعد L.Read() را بنویسید. هر دو نوع را در همان فایل آموزشی نگه دارید تا dotnet run ساده بماند. با dotnet run اجرا کنید. صفحه باید یک خط نشان دهد: 9. فیلد فقط داخل Lid خصوصی میماند. متد عمومی راهی است که Pine به عدد میرسد. نام کلاس عمومی شروعکننده را Pine نگه دارید.
چه کسی عضو را میبیند
در صفحهٔ static با نام کلاس Cup.Mark() را صدا زدید. اینجا واژههای تازه private و publicاند. فیلد private فقط داخل کلاس خودش دیده میشود. کلاسهای دیگر در همان فایل — از جمله Pine — وقتی seal خصوصی است نمیتوانند L.seal بنویسند. متد public هنوز میتواند از Pine اجرا شود و همان مقدار پنهان را برگرداند.
فایل Pine را باز کنید. نام کلاس شروعکننده Pine میماند. این صفحه شروعکننده را عوض نام نمیکند. اگر هنوز باقیماندهٔ Cup.Mark(); همهٔ چیزی است که در Main دارید، پاکش کنید. هر باقیماندهٔ کلاس Cup را پاک کنید. هر باقیماندهٔ Jar را پاک کنید. هر خط ReadLine را هم پاک کنید. فایلی که نگه میدارید منتظر تایپ نیست.
بیرون از آکولادهای Pine — هنوز در همان فایل — بنویسید public class Lid. داخل آکولادها اعلام کنید private int seal;. سازنده را بنویسید Lid(int n) { seal = n; }. بعد بنویسید public int Read() { return seal; }. در این صفحه داخل Lid هیچ Main نیست. پیش از اجرا فایل را ذخیره کنید.
فیلد به private نیاز دارد تا Pine نتواند با نام به seal دست بزند. متد به public نیاز دارد تا Pine بتواند Read را صدا بزند. نوع برگشتی int است چون Read عدد ذخیرهشده را به فراخواننده برمیگرداند. return seal; را داخل بدنهٔ متد نگه دارید.
using System;
public class Lid
{
private int seal;
Lid(int n)
{
seal = n;
}
public int Read()
{
return seal;
}
}
Pine یک lid میسازد و Read را صدا میزند
Pine مقدار public static void Main() را نگه میدارد. داخل Main دو خط به ترتیب بنویسید: Lid L = new Lid(9);، بعد Console.WriteLine(L.Read());. سازنده 9 را در فیلد خصوصی میگذارد. فراخوانی L.Read() همان مقدار را برمیگرداند. نوشتن آن را نشان میدهد. در این صفحه Cup.Mark(); نمینویسید. آن درس static بود.
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) یک lid میسازد و 9 را در seal میگذارد. فراخوانی L.Read() وارد متد عمومی همان شیء میشود. بدنه seal را برمیگرداند، پس مقدار 9 به Main برمیگردد. بعد Main همان مقدار برگشتی را مینویسد و صفحه 9 نشان میدهد.
با dotnet run اجرا کنید. برنامه یک خط مینویسد و میایستد. منتظر تایپ شما نمیماند. اگر dotnet run منتظر ماند، هنوز ReadLine در فایل است. آن خط را پاک کنید و در Pine همان new Lid(9) و Console.WriteLine(L.Read()); را نگه دارید، با private int seal و public int Read() در Lid. صفحه 9 نشان میدهد. اگر صفحه 2 نشان داد، ممکن است دموی باقیماندهٔ Cup tally هنوز اجرا شود. اگر ساخت روی L.seal خطا داد، خواستید فیلد خصوصی را از Main بخوانید — به L.Read() بروید.
اگر بنویسید Console.WriteLine(L.seal); در حالی که seal private است، ساخت رد میکند. همان رد درس است. در عمومی بمانید: L.Read(). اگر seal را بدون private بگذارید، دسترسی پیشفرض در این شکل ساده هنوز از Pine کامپایل میشود به روشی که این صفحه نمیخواهد بیاموزد — عمداً private را روی فیلد بگذارید.
مقایسه با Cupٔ static و فیلدهای عمومی ساده
در صفحهٔ static، بعد از کار static به Cup.tally از راه نام کلاس میرسیدید. این صفحه seal را از Pine پنهان میکند و فقط Read را باز میگذارد. باقیماندهٔ Cup.Mark(); Cup.Mark(); Console.WriteLine(Cup.tally); درس دیگری است. برای این صفحه Lid و Pine و L.Read() را نگه دارید.
میتوانستید هر فیلد را public کنید و از Main بنویسید L.seal. این درس private را انتخاب میکند تا شیء مالک ذخیره باشد و Pine از راه متد بپرسد. نوشتن فقط Console.WriteLine(L); یک 9 تمیز نشان نمیدهد. برای دیدن عدد برگشتی بنویسید Console.WriteLine(L.Read());.
دو lid که seal خصوصی جدا دارند
هر new Lid(...) seal خصوصی خودش را میگیرد. میتوانید بنویسید Lid a = new Lid(3); و Lid b = new Lid(8);، بعد هر دو a.Read() و b.Read() را بنویسید. کلیدواژهٔ private یک seal مشترک بین اشیاء نمیسازد. فقط جلوی نامبردن فیلد از کلاسهای دیگر را میگیرد.
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 نشان میدهد، شاید روی دموی تکlid باشید — برای ایست اول کافی است؛ وقتی چک دوم میخواهید فایل دوlid را استفاده کنید.
اگر ساخت دربارهٔ Read شکایت کرد، ببینید سرآیند متد public و int دارد. اگر Main هنوز Cup.Mark() را صدا میزند، آن باقیماندهٔ static را پاک کنید تا درس access بهجای tally عدد lid نشان دهد.
این صفحه برای namespaces چه میگذارد
این صفحه از private و public استفاده میکند تا یک کلاس بتواند فیلد را پنهان کند و هنوز مقدار را از راه متد به اشتراک بگذارد. صفحهٔ بعد — namespaces — نوعها را زیر یک نام گروهبندی میکند تا برنامههای بزرگتر منظم بمانند. اینجا با access بمانید. روی این صفحه پوشش namespace اختراع نکنید مگر از قبل میدانید؛ هدف درس private روی فیلد و public روی Read است.
Lid را داخل آکولادهای Pine تودرتو نکنید. در این صفحه دو کلاس همسطح در فایل مینشینند. اگر ساخت هنگام کامپایل Pine نتوانست Lid را پیدا کند، ببینید public class Lid در همان فایل است. اگر صفحه 0 نشان داد، شاید سازنده ذخیره نکرده — Lid(int n) { seal = n; } را نگه دارید و بعد از new، Read را صدا بزنید.
میتوانید اعلام کنید 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 نشان ندهد.
🧠 دانش خود را بیازمایید
دانش خود را بیازمایید
خود را با این آزمون تعاملی به چالش بکشید و ببینید موضوع را چقدر خوب درک کردهاید
📝 دستورالعملها
- هر سوال را با دقت بخوانید
- بهترین پاسخ را برای هر سوال انتخاب کنید
- میتوانید آزمون را هر چند بار که میخواهید تکرار کنید
- پیشرفت شما در بالا نمایش داده میشود