View Full Version : سوال: تفاوت متدهای برگشتی وغیر برگشتی (void....)
vahid1993
سه شنبه 22 دی 1394, 00:45 صبح
سلام برشما...
138332
میخواستم بدونم تفاوت متدهای برگشتی وغیر برگشتی دقیقا چیه چون توی عکسی که آپلود کردم جفتشونم دارن یه کارو انجام میدن ویه نتیجه مشابه دارن و یه جایی خونده بودم که میگفت از متدهای برگشتی زمانی استفاده میشه که بخواییم عملیاتیو انجام بدیم و خب اینجا بود که گیج ترم شدم...:افسرده::افسرده::افسرده ::افسرده:خب اینا که جفتشونم دارن عملیاتیو انجام میدن و یه نتیجه ایم دارن...:اشتباه::اشتباه::اشتبا ه: اگه لطف کنید با یه مثال تفاوتشونو بهم بگید واقعا ممنون میشم (فقط خواهشا یکم ساده توضیح بدید چون مبتدیم:لبخند::لبخند:)
bigtime
دوشنبه 12 بهمن 1394, 14:59 عصر
با سلام
دوست عزیز فرض کنید الان شما می خواید این عملیات جمعی رو که توی این متدهاتون انجام میدید رو به عنوان ورودی به یک متد دیگری که کارش مثلا به توان دو رسوندن ورودیش هست بفرستید. خوب چی کار می کنید؟
برای این کار شما اول باید مقدار خروجی جمع رو داشته باشید تا اون رو توی متد main به متد به توان رسان بفرستید دیگه.
توی method1 خودش محاسبات رو انجام میده و خودش هم به خروجی برای چاپ میفرسته. اما توی method2 کار فرستادن به خروجی برای چاپ رو دیگه سپرده به خود متد main که این رو فراخوانی کرده.
این رو هم بد نیست بدونید که هر متدی وظیفش انجام دادن یک عملیات هستش. حالا این یا خروجی برای متدی که اون رو فراخوانی می کنه پس می فرسته یا اینکه نه خروجی رو بر نمی گردونه و خودش یه کاری مثل اینکاری که شما توی متد ۱ تون داشتید (چاپ در خروجی) رو انجام میده.
موفق باشید
محمد فدوی
چهارشنبه 14 بهمن 1394, 11:29 صبح
سلام برشما...
میخواستم بدونم تفاوت متدهای برگشتی وغیر برگشتی دقیقا چیه چون توی عکسی که آپلود کردم جفتشونم دارن یه کارو انجام میدن ویه نتیجه مشابه دارن و یه جایی خونده بودم که میگفت از متدهای برگشتی زمانی استفاده میشه که بخواییم عملیاتیو انجام بدیم و خب اینجا بود که گیج ترم شدم...:افسرده::افسرده::افسرده ::افسرده:خب اینا که جفتشونم دارن عملیاتیو انجام میدن و یه نتیجه ایم دارن...:اشتباه::اشتباه::اشتبا ه: اگه لطف کنید با یه مثال تفاوتشونو بهم بگید واقعا ممنون میشم (فقط خواهشا یکم ساده توضیح بدید چون مبتدیم:لبخند::لبخند:)
اول اینکه به جای عکس گرفتن از کد مورد نظر، اون رو توی بلوک کد جاوا بنویسید.
در مورد سؤال، درسته در این مثال چندان تفاوتی نداره که از کدوم متد استفاده کنی. اما تصور کن که بخوای متدی که نوشتی رو به دیگران بدی تا اونا هم ازش استفاده کنن... یا مثلا واقعا قراره از این متد در یک برنامهٔ جدی استفاده کنی. من برای اینکه روشنتر بشه موضوع اول نام متدهات رو به نامهای مناسبتری تغییر میدم:
static void addAndPrint(int num1, int num2) {
int result = num1 + num2;
System.out.println(result);
}
static void add(int num1, num2) {
int result = num1 + num2;
System.out.println(result);
}
حالا اگه از متد addAndPrint استفاده کنیم، همیشه به این محکومیم که دوتا عدد به متد بدیم و اون هم برامون چاپش کنه! ولی با متد add دست خیلی بازتری داریم، مثلا شاید کسی بخواد به جای چاپ کردن نتیجه در خروجی، اون رو در ادامهٔ محاسباتش استفاده کنه مثل اینکه بخواد سه تا عدد رو با هم جمع کنه:
int ten = add(add(2, 5), 3);
که مسلما این با متد add قابل انجامه ولی با addAndPrint غیر ممکنه. پس، متد add (یعنی متدی که مقدار برگشتی داره) در این مثال انعطاف بیشتر داره و در نتیجه ساختیافتهتره، که این هم یعنی بهتره از این متد استفاده کنیم.
اما همونطور که گفتم در چنین مثالهایی تفاوت میزان انعطافشون خیلی واضح نیست و اگر یک مثال بزرگتر و عملیتر رو بررسی کنی بهتر درکش خواهی کرد.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.