چطور می توانم از متدهای set و get استفاده کنم، و چرا باید از آن ها استفاده کنم؟ آیا کلاس حتما باید هر دو متد get و set را داشته باشد؟
کاربرد متدهای get و set
متدهای set و get الگوهایی برای کپسوله سازی داده ها هستند. به جای دسترسی مستقیم به متغیرهای عضو کلاس، شما متدی با نام get برای دسترسی به این مقدار متغیرها و متدی با نام set برای تغییر دادن متغیرهای کلاس تعریف می کنید. اما باید به این نکته هم اشاره کرد که این متدها کاملا اختیاریند. اگر می خواهید متغیر شما در خارج از کلاس فقط خواندنی باشد(در خارج از کلاس قابل تغییر نباشد) می توانید فقط set را تعریف کنید. اگر می خواهید فقط قابل نوشتن باشد، set را تعریف کنید و با این حال می توانید هردو را با هم تعریف کنید یا اصلا هبچ کدام…
نام get و set هرچیزی می تواند باشد، ولی بهتر است از استاندارد ها پیروی کنید. مثلا اگر متدهایی برای دسترسی و تغییر متغیری به نام date می نویسید اسم آن متدها را بهتر است به صورت setDate و getDate نام گذاری کنید.
با کپسول سازی آن ها به این هدف می رسید که روی متغیرهای کلاس کنترل کامل داشته باشید. یعنی می توانید مثلا توسط متد set جلوی ذخیره شدن مقادیر غیر مجاز و نامعتبر را در متغیر بگیرید.
برای مثال، برای متغیر x عضو کلاس به این صورت متدهای set و get را بنویسید.
int x; int getX() { return x; } void setX(int x) { this.x = x; }
مثالی دیگر:
public class MyClass { private int age; //public method to get the age variable public int getAge() { return this.age; } //public method to set the age variable public void setAge(int age) { if(age>0) this.age = age; } }