Java အတွင်းပိုင်းအတန်းများ
Java အတွင်းပိုင်းအတန်းများ
Java တွင်၊ ၎င်းသည် အတန်းများ (အတန်းတစ်ခုအတွင်းရှိ အတန်း) ကိုလည်း အစုအဝေးပြုလုပ်နိုင်သည်။ nested classes များ၏ ရည်ရွယ်ချက်မှာ သင့်ကုဒ်ကို ပိုမိုဖတ်ရှုနိုင်စေပြီး ထိန်းသိမ်းနိုင်စေမည့် အတန်းများကို အုပ်စုဖွဲ့ရန်ဖြစ်သည်။
အတွင်းအတန်းကို ဝင်ရောက်ရန်၊ ပြင်ပအတန်း၏ အရာဝတ္ထုတစ်ခုကို ဖန်တီးပြီးနောက် အတွင်းအတန်း၏ အရာဝတ္ထုတစ်ခုကို ဖန်တီးပါ။
ဥပမာ
class OuterClass {
int x = 10;
class InnerClass {
int y = 5;
}
}
public class Main {
public static void main(String[] args) {
OuterClass myOuter = new OuterClass();
OuterClass.InnerClass myInner = myOuter.new InnerClass();
System.out.println(myInner.y + myOuter.x);
}
}
// Outputs 15 (5 + 10)
သီးသန့်အတွင်းခန်း
"ပုံမှန်" အတန်းနှင့်မတူဘဲ၊ အတွင်းအတန်းသည် private
သို့မဟုတ် protected
. ပြင်ပအရာဝတ္တုများကို အတွင်းအတန်းထဲသို့ မဝင်ရောက်လိုပါက၊ အတန်းကို private
အောက်ပါအတိုင်း ကြေညာပါ။
ဥပမာ
class OuterClass {
int x = 10;
private class InnerClass {
int y = 5;
}
}
public class Main {
public static void main(String[] args) {
OuterClass myOuter = new OuterClass();
OuterClass.InnerClass myInner = myOuter.new InnerClass();
System.out.println(myInner.y + myOuter.x);
}
}
အကယ်၍ သင်သည် ပြင်ပအတန်းမှ သီးသန့်အတွင်းခန်းကို ဝင်ရောက်ရန် ကြိုးစားပါက အမှားအယွင်းတစ်ခု ဖြစ်ပေါ်သည်-
Main.java:13: error: OuterClass.InnerClass has private access in OuterClass
OuterClass.InnerClass myInner = myOuter.new InnerClass();
^
Static Inner Class
အတွင်းအတန်းတစ်ခုလည်း ဖြစ်နိုင်သည် static
၊ ဆိုလိုသည်မှာ ပြင်ပအတန်း၏ အရာဝတ္ထုတစ်ခုကို မဖန်တီးဘဲ ၎င်းကို သင်ဝင်ရောက်နိုင်သည်-
ဥပမာ
class OuterClass {
int x = 10;
static class InnerClass {
int y = 5;
}
}
public class Main {
public static void main(String[] args) {
OuterClass.InnerClass myInner = new OuterClass.InnerClass();
System.out.println(myInner.y);
}
}
// Outputs 5
မှတ်ချက်-static
အရည်အချင်းများနှင့် နည်းလမ်းများကဲ့သို့ပင်၊ အတွင်းအတန်းတစ်ခုသည် ပြင်ပ static
အတန်း၏အဖွဲ့ဝင်များကို ဝင်ရောက်ခွင့်မရှိပါ။
Inner Class မှ Outer Class သို့ ဝင်ရောက်ပါ။
အတွင်းအတန်းများ၏ အားသာချက်တစ်ခုမှာ၊ ၎င်းတို့သည် ပြင်ပအတန်း၏ အရည်အချင်းများနှင့် နည်းလမ်းများကို ရယူနိုင်ခြင်းဖြစ်သည်-
ဥပမာ
class OuterClass {
int x = 10;
class InnerClass {
public int myInnerMethod() {
return x;
}
}
}
public class Main {
public static void main(String[] args) {
OuterClass myOuter = new OuterClass();
OuterClass.InnerClass myInner = myOuter.new InnerClass();
System.out.println(myInner.myInnerMethod());
}
}
// Outputs 10