فیلد در Java
یک فیلد int به نام fill داخل کلاس Cup در Cup.java بگذارید. در Shelf.java یک cup بسازید با 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;. در جعبهٔ اول متدی نیست. در Cup.java روی این صفحه main نیست. قبل از کامپایل ذخیره کنید.
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 همان شیء میگذارد. خط سوم عدد ذخیرهشده را چاپ میکند.
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;.
نمونهٔ باقیماندهٔ اشیاء میتواند پوشه را شلوغ کند. فایلی که هنوز با کلاس Chip صدا میزند c.beep(); درس قبل است. برای این صفحه Cup و Shelf و فیلد fill را نگه دارید. اینجا به beep نیاز ندارید.
اگر خود c را با System.out.println(c); چاپ کنید، صفحه یک 3 تمیز نشان نمیدهد. متن پیشفرض شیء را چاپ میکند. برای دیدن عدد ذخیرهشده، c.fill را چاپ کنید.
دو cup مقدار 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 شریک میشوند. روی این صفحه وقتی دو fill جدا میخواهید دو عبارت new Cup() بنویسید.
برای آن تمرین به جعبهٔ برنامهٔ سوم نیاز ندارید. Shelf را بادقت ویرایش کنید، دوباره کامپایل کنید و اجرا کنید. بعد اگر شکل اول کوئیز را میخواهید میتوانید جعبهٔ تکcup را برگردانید.
constructors بعداً چه اضافه میکند
این صفحه فیلد را بعد از new با خط جدا مقدار میدهد: c.fill = 3;. صفحهٔ بعد — constructors — راه دیگری برای گذاشتن مقدار شروع وقتی شیء ساخته میشود نشان میدهد. اینجا با فیلد ساده و انتساب بعد از new بمانید. روی این صفحه متد constructor نسازید.
برای فیلدهایی که هرگز مقدار نمیدهید مقدار پیشفرض هست: فیلد int از 0 شروع میشود. اگر قبل از هر انتساب c.fill را چاپ کنید، صفحه میتواند 0 نشان دهد. این صفحه هنوز انتسابی را که خودتان مینویسید درس میدهد، پس در دموی اصلی c.fill = 3; را قبل از چاپ نگه دارید.
اگر هنگام کامپایل Shelf.java نماد Cup پیدا نشد، چک کنید Cup.java کنار Shelf.java باشد و خط کلاس public class Cup باشد. اگر وقتی 3 میخواستید صفحه 0 نشان داد، شاید خط انتساب نباشد یا بعد از چاپ بیاید — c.fill = 3; را بالای println(c.fill) بگذارید.
قبل از constructors
میتوانید داخل Cup بنویسید int fill;، با Cup c = new Cup(); بسازید، c.fill = 3; بگذارید، و از Shelf چاپ کنید c.fill. هر دو فایل را کامپایل کنید و java Shelf را اجرا کنید. صفحه 3 نشان میدهد. دو شیء میتوانند دو fill متفاوت نگه دارند. صفحهٔ بعد constructors است؛ آنجا وقتی new شیء را میسازد شروع به گذاشتن مقدار میکنید.
🧠 دانش خود را بیازمایید
دانش خود را بیازمایید
خود را با این آزمون تعاملی به چالش بکشید و ببینید موضوع را چقدر خوب درک کردهاید
📝 دستورالعملها
- هر سوال را با دقت بخوانید
- بهترین پاسخ را برای هر سوال انتخاب کنید
- میتوانید آزمون را هر چند بار که میخواهید تکرار کنید
- پیشرفت شما در بالا نمایش داده میشود