Java Encapsulation
Encapsulation
Encapsulation ၏အဓိပ္ပာယ်မှာ သုံးစွဲသူများထံမှ "sensitive" ဒေတာကို ဝှက်ထားကြောင်း သေချာစေရန်ဖြစ်သည်။ ၎င်းကိုအောင်မြင်ရန်၊ သင်လိုအပ်သည်-
- class variables/attributes အဖြစ်ကြေငြာပါ။
private
-
ကိန်းရှင် ၏တန်ဖိုးကို ရယူပြီး အပ်ဒိတ်လုပ်ရန် အများသူငှာ ရယူရန်
နှင့် သတ်မှတ် နည်းလမ်းများကို ပေးဆောင်ပါ။
private
ရယူပြီး သတ်မှတ်ပါ။
private
variable များကို တူညီသော class တွင်သာ ဝင်ရောက်နိုင်သည် (ပြင်ပအတန်းတွင် ၎င်းကို ဝင်သုံးခွင့်မရှိ) ကို ယခင်အခန်းမှ သင်သင်ယူခဲ့သည် ။ သို့သော်၊ ကျွန်ုပ်တို့သည် အများသူငှာ ရယူပြီး သတ်မှတ်နည်းလမ်းများကို ပံ့ပိုးပေးပါက ၎င်းတို့ကို ဝင်ရောက်ကြည့် ရှု နိုင်မည် ဖြစ်သည် ။
get
နည်းလမ်းသည် ပြောင်းလဲနိုင်သောတန်ဖိုးကို ပြန်ပေးကာ နည်းလမ်း set
သည် တန်ဖိုးကို သတ်မှတ်ပေးသည်။
နှစ်ခုလုံးအတွက် Syntax သည် စာလုံးအကြီးဖြင့် ပထမစာလုံးဖြင့် စတင်သည် get
သို့မဟုတ် ၊ နောက်တွင် ကိန်းရှင်၏အမည်ဖြင့် စသည် ။set
ဥပမာ
public class Person {
private String name; // private = restricted access
// Getter
public String getName() {
return name;
}
// Setter
public void setName(String newName) {
this.name = newName;
}
}
နမူနာရှင်းပြထားပါတယ်။
get
method သည် variable ၏တန်ဖိုးကို ပြန်ပေး သည် name
။
set
method သည် parameter ( ) ကိုယူကာ variable newName
သို့သတ်မှတ်ပေးသည်
။ name
လက်ရှိ this
အရာဝတ္ထုကို ရည်ညွှန်းရန် အဓိကစကားလုံးကို အသုံးပြုသည်။
သို့သော်လည်း၊ name
variable အဖြစ်ကြေငြာ ထားသောကြောင့် private
၊
ဤအတန်းအပြင်မှ ၎င်းကိုကျွန်ုပ်တို့ဝင်ရောက်၍မရပါ ။
ဥပမာ
public class Main {
public static void main(String[] args) {
Person myObj = new Person();
myObj.name = "John"; // error
System.out.println(myObj.name); // error
}
}
အကယ်၍ variable ကိုအဖြစ်ကြေငြာပါက public
၊ ကျွန်ုပ်တို့သည် အောက်ပါ output ကို မျှော်လင့်ပါမည်-
John
သို့သော်၊ private
ကျွန်ုပ်တို့သည် ကိန်းရှင်တစ်ခုကို ဝင်ရောက်ရန် ကြိုးစားသောအခါ၊ ကျွန်ုပ်တို့သည် အမှားတစ်ခု ရရှိသည်-
MyClass.java:4: error: name has private access in Person
myObj.name = "John";
^
MyClass.java:5: error: name has private access in Person
System.out.println(myObj.name);
^
2 errors
ယင်းအစား၊ ကျွန်ုပ်တို့သည် ကိန်းရှင်ကို ဝင်ရောက်ပြီး အပ်ဒိတ်လုပ်ရန် နည်းလမ်းများကို getName()
အသုံးပြု သည်-setName()
ဥပမာ
public class Main {
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());
}
}
// Outputs "John"
ဘာကြောင့် Encapsulation
- အတန်းရည်ညွှန်းချက်များနှင့် နည်းလမ်းများကို ပိုမိုကောင်းမွန်စွာ ထိန်းချုပ်ပါ။
- Class attribute များကို read - only လုပ်နိုင်သည် ။
get
set
- ပြောင်းလွယ်ပြင်လွယ်- ပရိုဂရမ်မာသည် အခြားအစိတ်အပိုင်းများကို မထိခိုက်စေဘဲ ကုဒ်၏ အစိတ်အပိုင်းတစ်ခုကို ပြောင်းလဲနိုင်သည်။
- ဒေတာလုံခြုံရေးတိုးမြှင့်