บทความนี้อธิบายถึงกลไกการสร้างและตะขอของวัตถุระดับภายใน Java แบ่งปันสำหรับการอ้างอิงของคุณดังนี้:
แม้ว่าคลาสภายในใน Java จะเป็นอิสระอย่างสมบูรณ์จากคลาสอุปกรณ์ต่อพ่วงในข้อมูลสถานะ (สามารถทำหน้าที่โดยตรงผ่านอินสแตนซ์คลาสภายใน) วัตถุชั้นเรียนรอบนอกเป็นพื้นฐานสำหรับการดำรงอยู่ของวัตถุคลาสภายใน
เมื่อสร้างวัตถุคลาสภายในมีความจำเป็นเพื่อให้แน่ใจว่าพวกเขาสามารถมีวัตถุระดับต่อพ่วงที่จะขอดังนั้น Java ให้ไวยากรณ์ที่เข้มงวดสำหรับการสร้างวัตถุคลาสภายใน
มีสองวิธีที่ใช้โดยทั่วไปในการสร้างวัตถุคลาสภายใน
วิธีการที่ 1: วิธีการมาตรฐานโดยใช้อินสแตนซ์คลาสอุปกรณ์ต่อพ่วงชื่อชั้นเรียนภายในใหม่ ()
ตัวอย่างที่ 1:
ชั้นเรียนสาธารณะชั้นนอก {int no; คลาส Inner ใช้ Interfacea {}} อินเตอร์เฟส interfacea {} main () {outer instancea = new outer (); interfacea interfacea = instancea.nner inner (); // ให้ความสนใจกับวิธีการสร้างอินสแตนซ์คลาสภายในใหม่ ชื่อชั้นเรียนภายใน () จุดประสงค์ของสิ่งนี้คือเพื่อให้แน่ใจว่าอินสแตนซ์คลาสภายในจะต้องมีอินสแตนซ์อินสแตนซ์คลาสต่อพ่วง hook.interfacea interfaceb = instancea.new outer (); // อินสแตนซ์อื่นของคลาสภายในถูกสร้างขึ้นและมันยังติดอยู่กับอินสแตนซ์อินสแตนซ์ -Method2 : ใช้วิธีการโรงงานเพื่อส่งคืนวัตถุที่ใช้อินเทอร์เฟซบางอย่างโดยตรง (โดยทั่วไปวัตถุนั้นเป็นคลาสภายใน)
ตัวอย่างที่ 1:
ชั้นเรียนสาธารณะชั้นนอก {int no; คลาส Inner ดำเนินการ Interfacea {} public interfacea createInnerInstance {return interfacea {read (); }}} อินเตอร์เฟส interfacea {public void read ();} main () {outer instancea = new outer (); interfacea interfacea = instancea.createinnerInstance (); // หมายเหตุวิธีการที่สร้างโดยอินสแตนซ์ชั้นเรียนภายใน Interfacea InterfaceB = Instancea.createinnerInstance (); // อินสแตนซ์ใหม่ของคลาสภายในถูกสร้างขึ้นและมันยังติดอยู่กับอินสแตนซ์อินสแตนซ์ -เมื่อเปรียบเทียบกับวิธีการใช้ชื่ออินสแตนซ์ชื่อคลาสใหม่ () วิธีการโรงงานจะดูสง่างามและชัดเจนยิ่งขึ้น
- ให้ความสนใจกับสถานการณ์การใช้งานของชั้นเรียนภายใน โดยทั่วไปจะส่งคืนวัตถุคลาสภายในที่ใช้ฟังก์ชั่นอินเทอร์เฟซบางอย่างกับภายนอกจากนั้นดำเนินการที่สอดคล้องกัน (เนื่องจากสมาชิกของชั้นเรียนต่อพ่วงสามารถมองเห็นได้อย่างเต็มที่ในชั้นเรียนภายในความสะดวกและข้อได้เปรียบของพวกเขาจึงชัดเจนมาก)
เนื่องจากคอมไพเลอร์จะรวบรวมข้อมูลอินสแตนซ์คลาสอุปกรณ์ต่อพ่วงโดยอัตโนมัติเมื่อวัตถุคลาสชั้นในถูกสร้างขึ้น Java ยังให้วิธีการนี้ในการโทรกลับอินสแตนซ์คลาสอุปกรณ์ต่อพ่วง (บางครั้งวิธีนี้สำคัญมาก)
ตัวอย่าง:
ชั้นเรียนสาธารณะ Outer {คลาสภายใน {การเรียกกลับนอกโลก () {return outer.his} // callback () เมธอดส่งคืนการอ้างอิงไปยังวัตถุคลาสรอบนอกของเบ็ดคลาสชั้นในโดยใช้ชื่อคลาสไวยากรณ์ -สำหรับเนื้อหาที่เกี่ยวข้องกับ Java ผู้อ่านที่สนใจในเว็บไซต์นี้สามารถดูหัวข้อ: "บทนำและการสอนขั้นสูงเกี่ยวกับการเขียนโปรแกรมเชิงวัตถุ Java", "การสอนเกี่ยวกับโครงสร้างข้อมูล Java และอัลกอริทึม" สรุปการดำเนินงานของ Java
ฉันหวังว่าบทความนี้จะเป็นประโยชน์กับการเขียนโปรแกรม Java ของทุกคน