คำนำ
การปิดเป็นวัตถุที่เรียกได้ซึ่งบันทึกข้อมูลบางอย่างจากขอบเขตที่สร้างขึ้น ผ่านคำจำกัดความนี้จะเห็นได้ว่าคลาสชั้นในเป็นการปิดเชิงวัตถุเนื่องจากไม่เพียง แต่มีข้อมูลเกี่ยวกับวัตถุระดับอุปกรณ์ต่อพ่วง (ขอบเขตของการสร้างคลาสชั้นใน) แต่ยังมีการอ้างอิงโดยอัตโนมัติไปยังวัตถุระดับอุปกรณ์ต่อพ่วง ในบทบาทนี้ชั้นเรียนภายในมีสิทธิ์ที่จะดำเนินการสมาชิกทั้งหมดรวมถึงสมาชิกเอกชน
หนึ่งในปัญหาที่ถกเถียงกันมากที่สุดใน Java คือเชื่อว่า Java ควรมีกลไกคล้ายตัวชี้บางอย่างเพื่อให้สามารถเรียกกลับ ผ่านการโทรกลับวัตถุสามารถนำข้อมูลบางอย่างที่อนุญาตให้เรียกวัตถุเริ่มต้นที่จุดต่อมา หากการโทรกลับถูกนำไปใช้ผ่านตัวชี้คุณสามารถหวังได้ว่าโปรแกรมเมอร์จะไม่ใช้ตัวชี้ในทางที่ผิด
1. สมาชิกชั้นเรียนภายใน
ชั้นเรียนชั้นในถือได้ว่าเป็นสมาชิก สมาชิกชั้นในสามารถเข้าถึงคุณสมบัติสมาชิกทั้งหมดและวิธีการสมาชิกของคลาสภายนอกโดยไม่มีเงื่อนไข
คลาส outterclass {// ชั้นเรียนภายนอกส่วนตัว int ใน = 0; int int คงที่ = 4; Public OutterClass (int in) {this.in = in; } คลาส innerClass {// ภายในคลาสโมฆะสาธารณะเอาท์พุท () {system.out.println (in); System.out.println (Inn); -เมื่อคลาสสมาชิกภายในเป็นเจ้าของตัวแปรสมาชิกหรือเมธอดที่มีชื่อเดียวกันกับคลาสภายนอกสมาชิกของคลาสสมาชิกภายในจะเข้าถึงโดยค่าเริ่มต้น หากคุณต้องการเข้าถึงสมาชิกที่มีชื่อเดียวกันของคลาสภายนอกคุณต้องเข้าถึงในแบบฟอร์มต่อไปนี้:
OutterClass (คลาสภายนอก). นี่คือสมาชิก
เมื่อคลาสภายนอกเข้าถึงคลาสภายในคุณต้องสร้างวัตถุของคลาสสมาชิกภายในก่อนจากนั้นเข้าถึงผ่านการอ้างอิงไปยังวัตถุนี้
คลาส OutterClass {INT ส่วนตัวใน = 0; int int คงที่ = 4; Public OutterClass (int in) {innerclass inner = new innerclass (); this.in = inner.innernum; } คลาส innerClass {// ชั้นในระดับสาธารณะ int Innernum = 1; โมฆะสาธารณะเอาท์พุท () {system.out.println (in); System.out.println (Inn); int a = outterclass.innnn; -คลาสสมาชิกภายในมีอยู่บนพื้นฐานของคลาสภายนอกนั่นคือถ้าคุณต้องการสร้างวัตถุของคลาสสมาชิกภายในของสมาชิกหลักฐานคือวัตถุของคลาสภายนอกจะต้องมีอยู่ วิธีทั่วไปในการสร้างวัตถุคลาสภายในของสมาชิกมีดังนี้:
คลาสคลาสสาธารณะคลาส {โมฆะคงที่สาธารณะหลัก () {OutterClass OC = New OutterClass (3); outterclass.innerclass ใน = oc.new innerclass (); - 2. หมวดหมู่ภายในท้องถิ่น
ชั้นเรียนภายในท้องถิ่นเป็นเหมือนตัวแปรท้องถิ่นในวิธีการและไม่สามารถมีตัวดัดแปลง public protected private และ static
คลาส OutterClass {Public OutterClass (int in) {คลาส innerClass {// ชั้นในคลาสภายใน int intumnerum = 1; - 3. ชั้นเรียนภายในที่ซ้อนกัน
คลาสภายในที่ซ้อนกันคือคลาสภายในที่แก้ไขเป็น static ชั้นเรียนชั้นในที่ประกาศว่าเป็น static ที่ไม่จำเป็นต้องมีการเชื่อมต่อระหว่างวัตถุคลาสชั้นในและวัตถุชั้นนอกนั่นคือเราสามารถอ้างถึง outer.inner ได้โดยตรงนั่นคือเราไม่จำเป็นต้องสร้างชั้นนอกหรือชั้นใน
คลาส OutterClass {Public OutterClass (int in) {} คลาสคงที่ innerClass {// ชั้นในคลาสภายในคลาส intinernum = 1; }} คลาสสาธารณะคลาส {โมฆะคงที่สาธารณะหลัก () {outterclass.innerClass ใน = new OutterClass.innerClass (); - 4. หมวดหมู่ภายในที่ไม่ระบุชื่อ
คลาสภายในที่ไม่ระบุชื่อเป็นคลาสที่เราใช้มากที่สุดเพราะเราไม่ต้องการให้ชื่อพวกเขาดังนั้นเราจึงไม่เปิดเผยตัว คลาสภายในที่ไม่ระบุชื่อจะต้องกำหนดล่วงหน้า
btnsan.setonclicklistener (newonclicklistener () {@Override PublicVoidonClick (ดู V) {}}); 5. ปิดและโทรกลับ
การปิดเป็นวัตถุที่สามารถเรียกได้ซึ่งบันทึกข้อมูลเกี่ยวกับขอบเขตที่สร้างขึ้น Java ไม่สามารถรองรับการปิดอย่างชัดเจน แต่ใน Java การปิดสามารถนำไปใช้ผ่าน "Interface + Inner Class"
ตัวอย่างเช่น: โปรแกรมเมอร์อินเตอร์เฟสและนักเขียนคลาสพื้นฐานมีวิธี work เดียวกันและชื่อวิธีเดียวกัน แต่ความหมายของมันแตกต่างอย่างสิ้นเชิง ในเวลานี้จำเป็นต้องปิด
ผู้เขียนคลาส {// Writer Base Base Class Work Work () {};} อินเตอร์เฟสโปรแกรมเมอร์ {// programmer อินเตอร์เฟสโมฆะ Work ();} รหัสการใช้งานปิดมีดังนี้:
Public Class WriterProgrammer ขยายนักเขียน {@Override โมฆะสาธารณะงาน () {// การเขียน} รหัสโมฆะสาธารณะ () {// รหัสเขียน} คลาสโปรแกรมเมอร์เริ่มใช้โปรแกรมเมอร์ - ในคลาสย่อยคลาสภายในที่เป็นไปตามกฎอินเทอร์เฟซของโปรแกรมเมอร์จะถูกกำหนดและจากนั้นคลาสภายในใช้วิธี work() วิธี code() และใช้วิธี work() ของผู้เขียนคลาสแม่ในคลาสย่อยโดยตรง
6. บทบาทของหมวดหมู่ภายใน
ชั้นเรียนภายในสามารถนำไปใช้อย่างดีเพื่อซ่อน
โดยทั่วไปคลาสที่ไม่ใช่ภายในไม่อนุญาตให้มีการอนุญาต private และ protected แต่ชั้นเรียนภายในสามารถทำได้
คลาสด้านในสามารถเข้าถึงองค์ประกอบทั้งหมดของคลาสอุปกรณ์ต่อพ่วง
แต่การสืบทอดหลายครั้งนั้นสำเร็จ
มันสามารถหลีกเลี่ยงการแก้ไขอินเทอร์เฟซและใช้การโทรของสองวิธีที่มีชื่อเดียวกันในคลาสเดียวกัน
7. สรุป
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะช่วยให้ทุกคนเรียนรู้หรือใช้ Java หากคุณมีคำถามใด ๆ คุณสามารถฝากข้อความไว้เพื่อสื่อสาร