View Full Version : سوال: کاربرد @و this
hajjijo
چهارشنبه 18 فروردین 1395, 05:42 صبح
با سلام ،
من کاربرد this , @ رو متوجه نشدم مقداری دربارشون مطالعه داشتم ولی به نتیجه ای نرسیدم.
Example:
@Override
//******************
this (1
)
متشکر از کمکتون...
smokyshadow
جمعه 20 فروردین 1395, 05:22 صبح
با سلام ،
من کاربرد this , @ رو متوجه نشدم مقداری دربارشون مطالعه داشتم ولی به نتیجه ای نرسیدم.
Example:
@Override
//******************
this (1
)
متشکر از کمکتون...
سلام .اگه بخوام مختصر توضیح بدم....هر متد غیر استاتیک روی یک شی فراخوانی می شه مثلcircle.getradius(); و یه ارجایی به این شیی که متد روی ان فراخوانی شده به متد پاس می شه .این ارجاع رو this میگیم.پس این ارجاع فقط در متد های غیر استاتیک قابل استفاده است.(چون متد های استاتیک روی شی فراخوانی نمیشن و روی کلاس فراخوانی میشن...پس this براشون معنی نداره و در صورت استفاده ->خطای کامپایل. حالا بریم سراغ کاربرد های this:
1.برای متمایز کردن متغیر های محلی با ویژگی های کلاس (وقتی متغیر محلی و ویژگی کلاس هم نام باشن) :
(مثال)
public class Circle{
float radius;
public void setRadius(float radius){
this.radius=radius;}
}
2.کاربرد برای فراخوانی کانستراکتری دیگر:
public class Student{
String name;
int age;
public Student(String name){
this.name=name;
}
public Student(String name, int age){
//inja ro deghat konin ,ye constructor bala ro farakhani mikone ba this:
this(name);
this.age=age;
}
}
3.کاربرد دیگه ای که زیاد تو جاوا معمول نیست(فراخوانی ابشاری):
public class Incerement{
int num=0;
Incerement increase(){
i++;
return this;
}
public void print(){
System.out.println(i);}
public static void main(String [] args){
Increment increment=new Increment();
increment.increase().increase().print();}
}
دومین چیزی که گفتین مفهوم حاشیه گذاری)annotation)است که به @ شروش میشود و قبل متد یا کلاسی نوشته می شود و توضیحی راجع به ان میدهد.هم چنین به کامنت گذاشتن فرق می کنه و در کامپایل تاثیر دارد.به طور مثال @Override که ذکر کردید :قبل یه متد میاد و تصریح می کنه که این متد همان متد سوپر کلاس رو override میکنه و در صورت خطا در over ride کردن خطای کامپایل میده مثلا اگه اسمو درست ننوشته باشه یا نوع و تعداد پارامتر هات فرق کنه.این کار باعث راحتی کار برنامه نویس میشه ولی شما می تونین بدون نوشتن اون هم این override کنین.
موفق باشید
hajjijo
جمعه 20 فروردین 1395, 06:37 صبح
خیلی ممنون .عالی بود
من فقط فراخوانی آبشاری رو نفهمیدم و این طور که شما گفتین فکر نکنم چیز زیاد مهمی هم باشه.
محمد فدوی
شنبه 21 فروردین 1395, 14:04 عصر
من کاربرد this , @ رو متوجه نشدم مقداری دربارشون مطالعه داشتم ولی به نتیجه ای نرسیدم.
شیء This، در واقع یک اشارهگر به شیء فعلی توی کلاس هست. بدیهیه که فقط در متدهای غیر Static به این شیء دسترسی داریم.
در این رابطه، این (http://www.javatpoint.com/this-keyword) رو بخون.
کاراکتر «@» در ابتدای همهٔ اصلاحگرها (Annotation) میآد. اصلاحگرها عموما مثل یک ابرداده (Metadata) در مورد اشیاء، متغیرها، متدها، کلاسها و... عمل میکنن ولی خب میشه با بررسی اصلاحگرها عمل خاصی رو در مورد هدف اصلاحگر انجام و اعمالی از این دست.
مثلا پیشنهادشده که وقتی کلاسی از یک کلاس دیگه ارثبری میکنه یا یک واسط (Interface) رو پیادهسازی میکنه، بهتره هنگام رونویسی (Override) متدهاش، با استفاده از اصلاحگر Override@، تأکید کنیم که «این یک رونویسی است!».
اما کاربرد اصلاحگرها خیلی وسیعتره.. بهتره این (http://tutorials.jenkov.com/java/annotations.html) رو بخونی.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.