PDA

View Full Version : مبتدی: کاربرد اشاره گر this



fm.star
پنج شنبه 18 خرداد 1391, 00:01 صبح
سلام.اصلا کاربرد this رو متوجه نمیشم,اگر ممکنه با مثال ضرورت استفاده ازشو بگین.مثلا اگه سازنده ی کپی نباشه باید فیلد ها رو تک تک مقدار بدیم اما نقش این this چیه؟لطفا توضیح واضحی بدید؟؟؟؟؟؟؟؟

M0TR!X
پنج شنبه 18 خرداد 1391, 00:18 صبح
کلمه کلیدی this به کلاس جاری اشاره میکنه ! وقتی میگی this یعنی این کلاس !

mortezaadi
پنج شنبه 18 خرداد 1391, 23:58 عصر
شما اول باید فرق بین کلاس و شئی رو تشخیص بدید. کلمه this به کلاس جاری اشاره نمیکنه!!!
کلمه this به شئی ایجاد شده اشاره داره نه به کلاس جاری!!!!!

این مثال رو ببینید:


public class Person {

private String name;

public person(String name) {
this.name = name;
}

public String getName(){
return this.name;
}
}



حالا 2 تا شئی به نام reza و ali درست میکنم


Person ali = new Person("ali");
Person reza = new Person("reza");


حالا اگه این دو تا تابع رو صدا کنید


ali.getName();
reza.getName();


هر دوتا این خط رو اجرا میکنند this.name

ولی نتیجه های متفاوتی بر میگردونند چون توی هر شیئ this به شیئ جاری اشاره داره

maktoom
جمعه 26 خرداد 1391, 17:33 عصر
سلام
یه وقت هم هست مثلا توی سازنده از یه کلاس تمام مقدار دهی های اولیه رو انجام دادی. بعد می خوای این شی که دیگه تمام متغیراش هم مقدار دهی شده رو بفرستی به یه متد یا کلاس دیگه. اونجا فقط از خود this استفاده می کنی. یعنی کلا این شی با تمامی متعلقاتش رو بفرست به اون متد یا فلان کار رو روش انجام بده.
راستی this به اون مفهوم اشاره گر نیستا. فقط می خواد بگه "این". شاید بنوعی در مقابل super.
یعنی اصلا توی جاوا اشاره گر به اون شکل C و اینا نداریم. بلکه اگه یه اشاره واسه یه شی گذاشتیم، اون اشاره گر مخصوص به اون شی خواهد بود. نه مثل C که می شد به هرجا اشاره کرد.

spiderman200700
جمعه 26 خرداد 1391, 19:05 عصر
جاوا دردسر کار با اشاره گر ها و آدرس های حافظه رو برای برنامه نوس کم کرده.
این خودش یه مزیت بزرگ برای جاوس.
قدرت بیشتر و پیچیدگی کمتر

همایون افشاری
سه شنبه 30 خرداد 1391, 15:09 عصر
یکی از کاربردهای this اینه که می تونید توی یه تابع سازنده - سازنده دیگه ی کلاس رو صدا بزنید :
public class Rectangle {
private int x, y;
private int width, height;

public Rectangle() {
this(0, 0, 0, 0);
}
public Rectangle(int width, int height) {
this(0, 0, width, height);
}
public Rectangle(int x, int y, int width, int height) {
this.x = x;
this.y = y;
this.width = width;
this.height = height;
}
...
}
به این کار میگن: فراخوانی ضمنی سازنده