تابع set و get در جاوا

ارسال شده توسط: حسین درویشی Comments: 0

تابع set و get در جاوا

از مزایای شی گرایی، کپسوله سازی است. مقصود از کپسوله کردن این است که اطمینان پیدا کنیم که داده های حساس از دید کاربران مخفی شده اند. این کاررا با private تعریف کردن فیلدها و ایجاد تابع set و get در جاوا می توان انجام داد.

گفتیم باید اول فیلدها را بصورت private تعریف کنیم. سوالی که در این میان ممکن است ذهن شما را مخشوش کند، چگونگی دسترسی به این فیلد می باشد.

راه حل:

استفاده از تابع set و get در جاوا می باشد. به این کار اصطلاحاً Encapsulation یا کپسوله کردن می گویند.

تابع setter و getter در جاوا

برای مثال کلاس زیر، Person را در نظر بگیرید که شامل فیلدهای name,family می باشد. در ابتدا باید این فیلد را بشکل private تعریف کنیم.

class Person{
private String name;
private String family;
}

بعد از این کار نوبت به تعریف متدهای set و get می رسد.

class Person{
private String name;
private String family;
public void SetName(String name) {
this.name=name;
}
public void SetFamily(String family) {
this.family=family;
}
public String getName() {
return name;
}
public String getFamily() {
return family;
}
}

همینطور که ملاحظه می کنید در متدهای set از کلمه کلیدی this استفاده شده است. مقاله آن را می توانید با کلیک روی لینک قبلی مطالعه کنید.

حال اگر بخواهیم مقدار name را set کنیم با فراخوانی متد setName این کار امکان پذیر است.

استفاده از حالت زیر اشتباه است و اگر استفاده کنید با خطا مواجه خواهید شد:

public class MyClass {
public static void main(String[] args) {
Person myObj = new Person();
myObj.name = "John";  // error
System.out.println(myObj.name); // error 
}
}

پس باید از حالت زیر استفاده کنیم:

همانطور که در شکل زیر مشاهده می کنید از متد getName نیز برای بدست آوردن مقدار فعلی آن استفاده شده است.

public class MyClass {
public static void main(String[] args) {
Person myObj = new Person();
myObj.setName("John"); // Set the value of the name variable to "John"
System.out.println(myObj.getName());
}
}
برای امتیاز به این نوشته کلیک کنید!
[کل: 8 میانگین: 3.1]

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *