PDA

View Full Version : سوال: تشریح کد های برنامه؟!



esmaeilbf
پنج شنبه 26 اردیبهشت 1392, 20:12 عصر
سلام دوستان
public class Leaf {

int i = 0;
Leaf increment() {
i++;
return this;
}
void print() {
System.out.println("i = " + i);
}
public static void main(String[] args) {
Leaf x = new Leaf();
x.increment().increment().increment().print();
}
}

همونطور که می بینید خروجی این برنامه میشه 3
اما من نحوه ی اجرا و توضیحاتی در مورد چگونگی انجامش میخوام!
-return this داره به کدوم شی اشاره میکنه؟
-Leaf increment اگر به جای نوع بازگشتی int بزاریم باید this.i بنویسیم .

mahsa f
پنج شنبه 26 اردیبهشت 1392, 22:18 عصر
منظور از this شیئ هست که توسط آن,تابعLeaf increment فراخوانی شده.
جواب سوال دومتون مثبته...
تابع Leaf increment درهربار فراخوانی فیلدiمربوط به شیئ که تابع توسطش فراخوانی شده اضافه میکنه و اون یکی تابع فیلد i رو چاپ میکنه.چون تابع Leaf incrementسه بار فراخوانی شده پس فیلد i سه واحد افزایش یافته و عدد سه چاپ میشه....
بازم اگه سوالی دارید,بپرسید...

esmaeilbf
پنج شنبه 26 اردیبهشت 1392, 23:06 عصر
در مورد return شدن this بیشتر توضیح بدین!
زیاد متوجه نشدم در واقع بعد از فراخوانی متد توسط شی x یک واحد به i اضافه میشه و منظور از بازگشت this چیه !

esmaeilbf
پنج شنبه 26 اردیبهشت 1392, 23:51 عصر
سرچ کردم متوجه شدم this داره متغیر i رو برمیگردونه
در واقع
برای دسترسی به فیلدها و متغیرهای نمونه this.i مینویسیم
واگر بنویسیم this به local variable یا پارامترهای متد داره اشاره میکنه.

همایون افشاری
جمعه 27 اردیبهشت 1392, 20:46 عصر
منظور از this در واقع رفرنسی از شی جاری هستش که برگشت داده میشه
به کمک این رفرنس میشه به متدها و فیلدهای شی دستزسی پیدا کرد.

mahsa f
جمعه 27 اردیبهشت 1392, 23:40 عصر
دوستمون کاملا درست فرمودند.متوجه شدید یا نه؟

esmaeilbf
جمعه 27 اردیبهشت 1392, 23:53 عصر
صد درصد ممنون از همه