ภาพรวม
เมื่อเร็ว ๆ นี้การเรียนรู้ Python และพบว่า Python สนับสนุนการสืบทอดมากขึ้นซึ่งทำให้ฉันนึกถึงกลไกนี้ที่ดำเนินการโดยชั้นเรียนภายใน บทความนี้ไม่ได้เกี่ยวกับวิธีการรับมรดกมากขึ้นผ่านชั้นเรียนภายใน แต่เพื่อสรุปประเภทและวิธีการใช้งานของชั้นเรียนภายใน
คลาสภายในของ Java แบ่งออกเป็น:
คลาสภายในใช้ในซอร์สโค้ด Android ในปริมาณมาก
ถัดไปแนะนำคลาสภายในเหล่านี้ตามลำดับ
ชั้นเรียนภายในที่ไม่ใช่แบบคงที่
เมื่อคลาสเป็นสมาชิกที่ไม่คงที่ของคลาสอื่นคลาสนี้จะเป็นคลาสภายในที่ไม่คงที่
รหัสตัวอย่างของการสร้างคลาสภายในที่ไม่คงที่มีดังนี้:
คลาส Outclass {คลาส innerClass {}}
เมื่อเรารวบรวม Javac เราพบว่าไฟล์. class สองไฟล์ถูกสร้างขึ้น: Outclass.class และ Outclass $ innerclass.class ดังที่แสดงในรูปด้านล่าง:
คลาสภายในจากวิธีที่ไม่คงที่ของคลาสภายนอก
เป็นเรื่องง่ายที่จะเข้าถึงคลาสภายในในคลาสภายนอก รหัสตัวอย่างมีดังนี้:
ชั้นเรียนสาธารณะ {private static int a = 0; .MakeInner ();} คลาส innerClass {โมฆะสาธารณะ seeouter () {system.out.println (a);ผลลัพธ์มีดังนี้:
0
คลาสภายในจากวิธีการคงที่ของคลาสภายนอก
มันค่อนข้างง่ายในการเข้าถึงคลาสภายในในคลาสภายนอก
Outclass.innerClass InnerClass = new Outclass ()
กล่าวอีกนัยหนึ่งคลาสภายในที่ไม่คงที่จะต้องได้รับการสร้างอินสแตนซ์ก่อนจากนั้นคลาสภายในอินสแตนซ์จะถูกใช้ผ่านวัตถุคลาสภายนอก รหัสตัวอย่างมีดังนี้:
ชั้นเรียนสาธารณะ {private static int a = 0; .innerclass innerclass = new Outclass ()
เรียกใช้ผลลัพธ์:
01
การอ้างอิงนี้ในชั้นเรียนภายใน
คลาสสามัญสามารถอ้างอิงวัตถุปัจจุบันด้วยสิ่งนี้รวมถึงคลาสภายใน แต่ถ้าคลาสภายในต้องการอ้างอิงวัตถุปัจจุบันของคลาสภายนอก คุณสามารถใช้วิธีการต่อไปนี้:
ชื่อภายนอกนี่
รหัสตัวอย่างมีดังนี้:
ชั้นเรียนสาธารณะ {private static int a = 0; .innerclass innerclass = new Outclass () }}}
ชั้นเรียนภายใน
ชั้นเรียนที่ไม่คงที่ได้รับการแนะนำข้างต้น
คลาสคงที่ภายในเป็นบทบาทของสมาชิกคงที่ในคลาสภายนอก
โปรดทราบว่าไม่สามารถแก้ไขคลาสภายนอกได้โดยใช้ตัวปรับเปลี่ยนแบบคงที่
รหัสตัวอย่างมีดังนี้:
คลาส Outclass {คลาสคงที่ innerClass {}}
รวบรวมด้วยคำสั่ง Javac คุณจะเห็นว่ามีไฟล์. class สองไฟล์ดังที่แสดงในรูปด้านล่าง:
คลาสภายในของคลาสภายในแบบคงที่จากวิธีที่ไม่คงที่ของคลาสภายนอก
การเยี่ยมชมคลาสภายในแบบคงที่จากคลาสภายนอกนั้นเหมือนกับคลาสภายในที่ไม่คงที่ในหมวดหมู่ภายนอก อย่างไรก็ตามควรสังเกตว่าในเวลานี้คลาสภายในแบบคงที่สามารถเข้าถึงสมาชิกแบบคงที่ของคลาสภายนอกเท่านั้นและสมาชิกที่ไม่คงที่ไม่สามารถเข้าถึงได้
รหัสตัวอย่างมีดังนี้:
ชั้นเรียนสาธารณะ {private static int a = 0; Outclass Oclass = new Outclass (); println (b);}}}
ผลการดำเนินการมีดังนี้:
Outclass $ innerclass@79a3400
การจำแนกประเภทภายในของคลาสภายในแบบคงที่จากวิธีการคงที่ภายนอก
สังเกต:
เนื่องจากคลาสภายในแบบคงที่เป็นสมาชิกคงที่ของคลาสภายนอกและสมาชิกคงที่ถูกผูกไว้กับคลาสไม่ใช่วัตถุของวัตถุอินสแตนซ์ ดังนั้นคลาสภายในในวิธีการคงที่ของคลาสภายนอกไม่จำเป็นต้องยกตัวอย่างคลาสภายนอกก่อน
รหัสตัวอย่างมีดังนี้:
ชั้นเรียนสาธารณะ {private static int a = 0; Outclass = new Outclass (); สิ่งนี้);
ชั้นเรียนภายในที่ไม่ระบุชื่อ
ชั้นเรียนภายในที่ไม่ระบุชื่อกำลังท่วมท้นในการพัฒนาแอปพลิเคชัน Android
คลาสภายในที่ไม่ระบุชื่อสามารถรู้ได้ว่านี่เป็นคลาสภายในที่ไม่มีหมวดหมู่ซึ่งมักจะใช้เพื่อทำให้รหัสง่ายขึ้น
ฉันเชื่อว่านักเรียนที่เขียน Java ใช้เธรด รหัสตัวอย่างมีดังนี้:
ชั้นเรียนสาธารณะ Outclass {โมฆะสาธารณะ testanonymousclass () {เธรด t = เธรดใหม่ (ใหม่ runnable () {@Override โมฆะสาธารณะเรียกใช้ () {สำหรับ (int i = 0; i <10; i ++) {system.out.println (i); ลอง {thread.sleep (500);} catch (InterruptedException E) {E.PrintStackTrace ();}}); . ");} โมฆะสาธารณะคง
ผลการดำเนินการมีดังนี้:
กระทู้อื่นกำลังทำงาน ...