در اینجا یک نمونهٔ معمول از اعلامیهٔ یک Method آورده شده است:
public double calculateAnswer(double wingSpan, int numberOfEngines,
double length, double grossTons) {
// محاسبه اینجا انجام میشود
}
اجزای ضروری یک اعلامیهٔ Method شامل نوع خروجی (Return Type)، نام Method، یک جفت پرانتز () و یک بدنه داخل براکتها {} است.
بهطور کلیتر، اعلامیهٔ یک Method شش جزء دارد و به ترتیب زیر مرتب شدهاند:
public، private و موارد دیگری که بعداً با آنها آشنا خواهید شد.void است.() قرار دارند. اگر پارامتری وجود نداشت، باید از پرانتز خالی استفاده کنید.تعریف: دو جزء از اعلامیهٔ Method، امضای Method (Method Signature) را تشکیل میدهند: نام Method و نوع پارامترها.
امضای Methodای که بالاتر تعریف شد، این است:
calculateAnswer(double, int, double, double)
---
نام Method میتواند هر شناسهٔ معتبری باشد، اما قراردادهای کدنویسی محدودیتهایی را اعمال میکنند. طبق قرارداد، نام Method باید یک فعل به حروف کوچک باشد، یا یک نام چندکلمهای که با فعلی به حروف کوچک شروع شود و پس از آن صفتها، اسمها و غیره بیایند. در نامهای چندکلمهای، حرف اول کلمهٔ دوم و کلمات بعدی باید بزرگ باشد. چند نمونه:
run
runFast
getBackground
getFinalData
compareTo
setX
isEmpty
معمولاً یک Method در کلاس خود نام منحصربهفردی دارد. اما گاهی ممکن است یک Method به دلیل Method Overloading (بارگذاری بیش از حد Method) نامی مشابه با Methodهای دیگر داشته باشد.
---زبان برنامهنویسی جاوا از Method Overloading پشتیبانی میکند. جاوا میتواند Methodهایی با امضای متفاوت را از هم تشخیص دهد. این یعنی Methodهای داخل یک کلاس میتوانند نام یکسانی داشته باشند، به شرطی که لیست پارامترهایشان متفاوت باشد.
فرض کنید یک کلاس دارید که با هنر خوشنویسی انواع مختلف داده (رشتهها، اعداد صحیح و...) را ترسیم میکند و برای هر نوع داده یک Method جداگانه دارد. نامگذاری جداگانه برای هر Method خستهکننده است — مثلاً drawString()، drawInteger()، drawFloat() و غیره. در زبان جاوا میتوانید از یک نام واحد برای همهٔ Methodهای ترسیم استفاده کنید و لیست آرگومانهای متفاوتی به هرکدام بدهید:
public class DataArtist {
...
public void draw(String s) {
...
}
public void draw(int i) {
...
}
public void draw(double f) {
...
}
public void draw(int i, double f) {
...
}
}
Methodهای overloaded بر اساس تعداد و نوع آرگومانها از هم تمایز داده میشوند. در مثال بالا، draw(String s) و draw(int i) دو Method مجزا و منحصربهفرد هستند، چون نوع آرگومانهایشان فرق دارد.
نکته: نمیتوانید دو Method با نام یکسان و تعداد و نوع آرگومانهای یکسان تعریف کنید، چون کامپایلر نمیتواند آنها را از هم تشخیص دهد. همچنین، کامپایلر برای تمایز Methodها نوع خروجی را در نظر نمیگیرد؛ پس حتی اگر نوع خروجی دو Method متفاوت باشد، نمیتوانید هر دو را با امضای یکسان تعریف کنید.
هشدار: از Method Overloading بهصورت افراطی استفاده نکنید، چون ممکن است خوانایی کد را بهشدت کاهش دهد.
این محتوا کاملا رایگان توسط تیم کدلپر ترجمه شده و در اختیار شما کاربران عزیز قرار گرفته است، هر گونه کپی برداری برای مقاصد غیر رایگان و بدون ذکر منبع، مورد پیگیری قانونی قرار میگیرد.
ترجمه شده از منبع: https://dev.java/learn/