Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

วิธีสร้าง Instance ของ Member Inner Class ใน Java

คลาสที่ประกาศอยู่ในคลาสแต่นอกเมธอด เรียกว่า member inner class

เราสามารถ instantiate member inner class ได้ 2 วิธี:

  • Invoked within the class (เรียกใช้ภายในคลาส)
  • Invoked outside the class (เรียกใช้นอกคลาส)

กฎสำหรับ Inner Class

  • Outer class (คลาสที่มี inner class) สามารถ instantiate inner class objects ได้ไม่จำกัดจำนวน ภายในโค้ดของมัน
  • ถ้า inner class เป็น public และ containing class ก็เป็น public โค้ดในคลาสอื่นที่ไม่เกี่ยวข้องก็สามารถสร้าง instance ของ inner class ได้
  • ไม่มี inner class objects ที่ instantiate อัตโนมัติพร้อมกับ outer class object
  • ถ้า inner class เป็น static static inner class สามารถ instantiate ได้โดยไม่ต้องมี outer class instance แต่ถ้าไม่ใช่ static inner class object ต้อง associated กับ instance ของ outer class
  • Outer class สามารถเรียก private methods ของ inner class ได้

Member Inner Class ที่ invoked ภายในคลาส

ในตัวอย่างด้านล่าง เราเรียกเมธอดของ member inner class จากเมธอด display() ของ OuterClass

ตัวอย่าง

public class OuterClass {
    private int value = 20;
    class InnerClass {
        void show() {
            System.out.println("Value is: " + value);
        }
    }
    void display() {
        InnerClass ic = new InnerClass();
        ic.show();
    }
    public static void main(String args[]){
        OuterClass oc = new OuterClass();
        oc.display();
    }
}
Value is: 20

Member Inner Class ที่ invoked นอกคลาส

ในตัวอย่างด้านล่าง เราเรียกเมธอด show() ของ InnerClass จากนอก OuterClass คือคลาส Test

ตัวอย่าง

class OuterClass {
    private int value = 20;
    class InnerClass {
        void show() {
            System.out.println("Value is: "+ value);
        }
    }
}
public class Test {
    public static void main(String args[]) {
        OuterClass obj = new OuterClass();
        OuterClass.InnerClass in = obj.new InnerClass();
        in.show();
    }
}

ผลลัพธ์

Value is: 20