enum در Java
با enum یک مجموعهٔ ثابت از نامها فهرست کنید تا برنامه فقط از همان فهرست انتخاب کند. بنویسید enum Level با LOW، MEDIUM و HIGH. در Yard.java بنویسید Level mark = Level.MEDIUM; و mark را چاپ کنید. با javac Yard.java ترجمه کنید و java Yard را اجرا کنید. صفحه باید MEDIUM را نشان دهد. دموی دوم روی همان mark یک switch اجرا میکند و medium چاپ میکند. کلاسهای abstract را برای صفحهٔ بعد بگذارید — این درس فهرستی کوتاه از نامهای ثابت و چگونگی چاپ یا شاخهزدن روی یکی از آنهاست.
یک نام enum را چاپ کنید
صفحهٔ interface وعدههای خالی متد را با implements پر کرد. این صفحه بهجای آن ثابتها را فهرست میکند. فایل Yard.java را باز کنید. نام کلاس عمومی را Yard نگه دارید. دموهای باقیماندهٔ Signal / implements اگر داستان enum را دفن میکنند، فایلهای horn مربوط به Truck، دموهای مسیر، و هر Scanner صفحهکلید را پاک کنید. برنامه نباید منتظر تایپ بماند. به سطر import نیاز ندارید.
enum را بالای کلاس عمومی اعلام کنید:
enum Level {
LOW,
MEDIUM,
HIGH
}
نامها را با ویرگول جدا کنید. در این شکل مبتدی آنها را حروف بزرگ نگه دارید. برای این فایل تدریس نام آخر به ویرگول انتهایی نیاز ندارد.
داخل Yard.main یک نام را انتخاب کنید و چاپ کنید:
Level mark = Level.MEDIUM;
System.out.println(mark);
new Level() نمینویسید. نام نوع، یک نقطه، و ثابت را مینویسید: Level.MEDIUM.
enum Level {
LOW,
MEDIUM,
HIGH
}
public class Yard {
public static void main(String[] args) {
Level mark = Level.MEDIUM;
System.out.println(mark);
}
}
از پوشهای که Yard.java را نگه میدارد javac Yard.java را اجرا کنید. وقتی پرانتز، آکولاد و نقطهویرگول درست باشند، javac سطر خروجی خودش نمینویسد. بعد java Yard را اجرا کنید — نه java Yard.java. پسوند .java را از دستور اجرا بردارید. یک کلاس عمومی در فایل بگذارید تا نام با Yard یکی باشد. enum از نوع Level وقتی کنار Yard در همان فایل است در این شکل مبتدی بدون public میماند.
صفحه MEDIUM را نشان میدهد. یکبار اجرا را قدمبهقدم ببینید. Java از Yard.main شروع میکند. متغیر mark ثابت Level.MEDIUM را نگه میدارد. چاپ mark نام همان ثابت را مینویسد. نامهای دیگر LOW و HIGH روی نوع میمانند، اما این دمو فقط همانی را چاپ میکند که اختصاص دادید.
سطر اختصاص را یکبار دیگر بخوانید: نوع Level است، مقدار Level.MEDIUM است. هر دو طرف مال همان enum هستند. شما یک رشتهٔ آزاد نمیسازید؛ یک نام فهرستشده را برمیگزینید. وقتی بعداً در آزمایش خصوصی mark را به LOW یا HIGH عوض میکنید همان عادت را نگه دارید — فقط نامهای داخل فهرست enum مجازند.
اگر هنوز از فایل interface مقدار honk میبینید، به فایل تدریس enum برگردید و دوباره java Yard را اجرا کنید. اگر javac از ثابت گمشده شکایت کرد، املا و شکل حروفبزرگ MEDIUM را چک کنید. اگر بدون فهرستکردن در enum نام چهارمی سر فراخوانی بسازید، javac رد میکند — فهرست داخل enum مجموعهٔ مجاز است.
قانون را بلند بگویید وقتی صفحه را میبینید: enum نامها را فهرست میکند، کد با نقطه یکی را برمیگزیند، چاپ همان نام را نشان میدهد. در این صفحه کلاس abstract اختراع نکنید. کلاسهای abstract برای درس بعدیاند.
با switch روی enum شاخه بزنید
برنامهٔ دوم همان فهرست Level را نگه میدارد. main هنوز Level.MEDIUM را اختصاص میدهد. یک switch روی mark برای case انتخابشده یک واژهٔ حروفکوچک چاپ میکند.
enum Level {
LOW,
MEDIUM,
HIGH
}
public class Yard {
public static void main(String[] args) {
Level mark = Level.MEDIUM;
switch (mark) {
case LOW:
System.out.println("low");
break;
case MEDIUM:
System.out.println("medium");
break;
case HIGH:
System.out.println("high");
break;
}
}
}
با javac Yard.java ترجمه کنید، بعد java Yard را اجرا کنید. صفحه medium را نشان میدهد. switch وارد case مربوط به MEDIUM شد چون mark مقدار Level.MEDIUM داشت. break آن case را متوقف میکند تا caseهای بعدی اجرا نشوند. اگر در آزمایش بعدی میخواهید low یا high ببینید فقط ثابت اختصاصدادهشده را عوض کنید — فهرست enum را همان نگه دارید.
داخل هر case نام ثابت را بهصورت برهنه بنویسید: case MEDIUM:، نه case Level.MEDIUM:. switch از قبل نوع را از switch (mark) میداند. در این شکل مبتدی بعد از هر چاپ یک break بگذارید تا خروجی تدریس یک سطر روشن بماند. سه case را یکبار با چشم مرور کنید: LOW به low، MEDIUM به medium، HIGH به high. برای یک اختصاص فقط یکی از آن چاپها اجرا میشود.
اگر دموهای interface هنوز نزدیکاند، بهعنوان تاریخ نگه دارید. برای این درس فایل تدریس enum را اجرا کنید تا صفحه MEDIUM یا medium نشان دهد، نه honk. اگر javac از نوع عمومی تکراری شکایت کرد، هنوز بیش از یک نوع public در فایل دارید — فقط Yard را public نگه دارید.
سه نام Level
📊 Level enum names
| Name | Role on this page |
|---|---|
LOW |
listed constant; switch can print low |
MEDIUM |
assigned and printed in both demos |
HIGH |
listed constant; switch can print high |
جدول نقشهٔ کوتاه این صفحه است. enum هر سه نام را نگه میدارد. دموی اول نام میانی را بهصورت MEDIUM چاپ میکند. دموی دوم همان انتخاب را به واژهٔ حروفکوچک medium نگاشت میکند. فهرست را کوتاه و ثابت نگه دارید؛ در این صفحه mark را مثل یک String آزاد تایپشده نبینید. |
مقایسه با interface
در صفحهٔ interface، Signal متدهای خالی وعده داد و Truck implements Signal آنها را پر کرد. در این صفحه enum Level نامها را فهرست میکند و Yard یکی را برمیگزیند. هنوز Yard.java را ترجمه میکنید و java Yard را اجرا میکنید. توکنهای تازه enum، فهرست ثابت حروفبزرگ، Level.MEDIUM، و — در دموی دوم — caseهای switch روی آن نامها هستند.
اگر هنوز فایل implements Signal باز است، بدنههای متد و honk میبینید. به فایل enum بروید تا بالا enum Level نشان دهد و main یک ثابت اختصاص دهد. دموهای کلاس abstract را از این صفحه بیرون بگذارید. ورودی صفحهکلید را از این صفحه بیرون بگذارید.
قبل از کلاسهای abstract
میتوانید enum Level با LOW، MEDIUM و HIGH اعلام کنید، Level.MEDIUM را اختصاص دهید، و روی صفحه MEDIUM ببینید. میتوانید روی آن mark یک switch بزنید و medium ببینید. برای هر دموی نگهداشته Yard.java را ترجمه کنید و java Yard را اجرا کنید. برنامه از یک فهرست ثابت انتخاب کرد. صفحهٔ بعد کلاسهای abstract است، جایی که نوع والد میتواند متدی را بدون بدنهٔ کامل بگذارد تا فرزندها تمامش کنند.
دموی چاپ را برای ثابت روشن روی صفحه نگه دارید. دموی switch را برای شاخهٔ روشن روی همان ثابت نگه دارید. فایلهای abstract را از این صفحه بیرون بگذارید. این سه عادت ایست بازرسی قبل از جلو رفتناند. وقتی از چاپ مستقیم MEDIUM میآید — و وقتی از switch مقدار medium میآید — enum کار این درس را کرده و برای موضوع بعدی دربارهٔ کلاسهای abstract آمادهاید.
یکبار آخر پوشه را ببینید: یک Yard عمومی، یک enum Level با سه نام، بدون انتظار صفحهکلید، بدون اجبار به کلاس abstract. یکبار دیگر روی دموی باز javac Yard.java و java Yard را اجرا کنید. اگر صفحه هنوز با داستان سطر میانی جدول جور است، فهرست enum محکم است و دوره میتواند در صفحهٔ بعد به کلاسهای abstract برود.
🧠 دانش خود را بیازمایید
دانش خود را بیازمایید
خود را با این آزمون تعاملی به چالش بکشید و ببینید موضوع را چقدر خوب درک کردهاید
📝 دستورالعملها
- هر سوال را با دقت بخوانید
- بهترین پاسخ را برای هر سوال انتخاب کنید
- میتوانید آزمون را هر چند بار که میخواهید تکرار کنید
- پیشرفت شما در بالا نمایش داده میشود