کلاس در Java
کلاس یک نوع نامدار است که در فایل .java اعلام میکنید. public class Badge را در فایلی به نام Badge.java بگذارید. داخل آن نوع یک متد static کوتاه به نام show بنویسید که ready چاپ کند. در فایل دوم به نام Desk.java بگذارید public class Desk با یک main که Badge.show(); را صدا بزند. هر دو فایل را کامپایل کنید، بعد java Desk را اجرا کنید. صفحه باید یک خط نشان دهد: ready. اینجا با بازگشت شمارش معکوس نمیکنید. دارید یک نوع را در فایل خودش نام میگذارید و از متد همان نوع میخواهید چاپ کند. همین نوع نامدار دوم — کلاسی که فقط فایل شروعکننده نیست — کار این صفحه است.
نوع در فایل خودش زندگی میکند
تا صفحات متد، تقریباً هر نمونه main و متدهای کمکی را داخل یک public class نگه میداشت. آن شکل هنوز درست است. این صفحه عمداً یک public class دوم اضافه میکند. Badge یک نام نوع است. لازم نیست برنامهای باشد که شروع میکند. Desk برنامهای است که شروع میکند. هر public class در فایلی مینشیند که نامش دقیقاً با نام کلاس یکی است، از جمله حرف بزرگ.
اول Badge.java را بسازید. خط اول نوع public class Badge است. داخل این فایل public class Desk ننویسید. نام کلاس قدیمی Ladder یا Gate را اینجا نگه ندارید. کامپایلر نام public class را به نام فایل گره میزند. اگر فایل Badge.java باشد و خط بگوید public class Ladder، javac رد میکند.
داخل آکولادهای Badge بنویسید static void show(). بدنه یک چاپ است: System.out.println("ready");. روی این صفحه void را نگه دارید. متد عددی برنمیگرداند. فقط یک کلمه مینویسد. در Badge.java روی این صفحه main نیست. عمدی است. کلاس میتواند متد نگه دارد بدون اینکه کلاس شروعکننده باشد.
قبل از کامپایل Badge.java را ذخیره کنید. برنامهٔ جعبهای اول همان فایل بهتنهایی است.
public class Badge {
static void show() {
System.out.println("ready");
}
}
Desk شروع میکند؛ Badge چاپ میکند
در همان پوشه فایل دوم بسازید: Desk.java. خط public class آن public class Desk است. داخل main یک صدا بنویسید: Badge.show();. این صدا نام نوع Badge را میگوید، بعد نقطه، بعد متد show. داخل Desk تنها show(); نمینویسید مگر اینکه show هم در Desk باشد. روی این صفحه show مال Badge است، پس صدا نام نوع را همراه دارد.
public class Desk {
public static void main(String[] args) {
Badge.show();
}
}
هر دو فایل باید در یک پوشه باشند تا javac با هم ببیندشان. از همان پوشه اجرا کنید javac Badge.java Desk.java. میتوانید اول Badge.java و بعد Desk.java را هم جدا کامپایل کنید؛ وقتی فایلها کامل باشند هر دو ترتیب کار میکند. وقتی پرانتز و آکولاد و نقطهویرگولها جور باشند، javac خودش خطی نمینویسد. بعد java Desk را اجرا کنید — نه java Desk.java، و نه java Badge. پسوند .java را از فرمان اجرا بردارید. کلاسی را شروع کنید که main دارد. همین دو جور فرمان در Windows و macOS کار میکند.
برنامه باید یک خط چاپ کند و بایستد: ready. منتظر تایپ شما نمیماند. اگر ترمینال منتظر ورودی صفحهکلید ماند، هنوز صدای nextLine از تمرین قدیمی در فایلی مانده است. آن را پاک کنید و در Desk همان Badge.show(); را بههمراه متد show در Badge نگه دارید.
اجرا را یکبار ببینید. Java از Desk.main شروع میکند. صدای Badge.show() وارد متد در نوع Badge میشود. آن متد ready را چاپ میکند و برمیگردد. بعد Desk تمام میشود. کلمهٔ روی صفحه از Badge آمد، نه از println نوشتهشده داخل خود Desk. همین جداسازی نکته است: یک کلاس برنامه را شروع میکند؛ کلاس دیگر متد کمکی را نگه میدارد.
نام فایل و public class باید یکی باشند
جفتها را یکبار در جدول کوچک بخوانید. هر public class یک نام فایل دارد.
📊 file, public class, role
| فایل | public class | نقش در این صفحه |
|---|---|---|
Badge.java |
Badge |
نوعی که show را نگه میدارد |
Desk.java |
Desk |
برنامهای که main را نگه میدارد |
اگر فایل را به badge.java با b کوچک عوض کنید و خط هنوز بگوید public class Badge، بعضی سیستمها این ناهماهنگی را خطا میگیرند. روی این شکل مبتدی حرف بزرگ B را در هر دو جا نگه دارید. اگر public class Badge و public class Desk را در یک فایل بگذارید، javac رد میکند: در هر فایل یک public class. کلاسهای کمکی private در همان فایل برای دورههای بعد میماند. اینجا دو فایل public نگه میدارید.
اشتباه رایج این است که چون تازه Badge.java نوشتهاید، java Badge را اجرا کنید. آن کلاس روی این صفحه main ندارد، پس اجرا شروع نمیشود. java Desk را اجرا کنید. اشتباه دیگر نوشتن show(); داخل Desk بدون پیشوند Badge. است وقتی show فقط روی Badge وجود دارد. آنوقت کامپایلر داخل Desk دنبال show میگردد و پیدا نمیکند.
نمونههای باقیماندهٔ بازگشت میتوانند پوشه را شلوغ کنند. فایلی که هنوز Ladder.java نام دارد و down(3) دارد برنامهٔ دیگری است. تا وقتی شکل دوفایلی را یاد میگیرید، پوشهٔ این درس را روی Badge.java و Desk.java نگه دارید. اینجا به down نیاز ندارید.
اول نوع را کامپایل کنید، بعد شروعکننده را
میتوانید گام کامپایل را تکهتکه تمرین کنید. اول فقط نوع را کامپایل کنید: javac Badge.java. آن فرمان Badge را چک میکند حتی اگر هنوز چیزی شروع نشده باشد. فایل کلاس میتواند بدون main کامپایل شود. بعد شروعکننده را کامپایل کنید: javac Desk.java. اگر Badge از قبل در همان پوشه کامپایل شده باشد، Desk میتواند نام Badge را در صدا تشخیص دهد. آخر java Desk را اجرا کنید و همان یک خط ready را تأیید کنید.
اگر javac Desk.java بگوید نماد Badge را پیدا نمیکند، سه چیز را چک کنید. پوشه باید Badge.java یا کلاس کامپایلشدهٔ Badge را کنار Desk.java داشته باشد. صدا باید Badge را با همان حروف بزرگ نوع بنویسد. نام متد بعد از نقطه باید show باشد، مطابق سرآیند در Badge.
نوشتن System.out.println("Badge"); داخل Desk کلمهٔ Badge را چاپ میکند. متد روی نوع را صدا نمیزند. وقتی میخواهید چاپی که داخل Badge است را ببینید، Badge.show(); را نگه دارید.
این صفحه هنوز چه کاری نمیکند
این صفحه new Badge() نمینویسد. ساختن شیء از کلاس صفحهٔ بعد است. اینجا صدا Badge.show() است — یک متد static روی خود نام نوع. هنوز فیلدی هم روی badge ذخیره نمیکنید. فیلدها برای صفحهٔ بعدی در همین ماژول میمانند. کار الان فقط نوع نامدار در فایل خودش، خط public class همخوان، و صدایی است که از آن نام نوع استفاده میکند.
میتوانید کلمهٔ چاپشده داخل show را به set عوض کنید و هر دو فایل را دوباره کامپایل کنید (یا دستکم Badge.java را، بعد دوباره Desk را اجرا کنید). صفحه باید از رشتهای که در Badge گذاشتهاید پیروی کند. Desk همان صدا میماند. این هم راه دیگری برای دیدن جداسازی است: متد نوع را ویرایش کنید، صدای شروعکننده را نگه دارید.
قبل از objects
میتوانید در Badge.java بنویسید public class Badge، داخلش static void show() بگذارید، و از Desk.main صدا بزنید Badge.show();. نام فایل و نام public class یکیاند. نوع و شروعکننده را کامپایل کنید، بعد java Desk را اجرا کنید. صفحه خطی را نشان میدهد که show چاپ کرده است. کلاس همان نوع نامدار است. صفحهٔ بعد objects است؛ آنجا با new از کلاس یک مقدار میسازید.
🧠 دانش خود را بیازمایید
دانش خود را بیازمایید
خود را با این آزمون تعاملی به چالش بکشید و ببینید موضوع را چقدر خوب درک کردهاید
📝 دستورالعملها
- هر سوال را با دقت بخوانید
- بهترین پاسخ را برای هر سوال انتخاب کنید
- میتوانید آزمون را هر چند بار که میخواهید تکرار کنید
- پیشرفت شما در بالا نمایش داده میشود