คำหลักนี้เป็นแนวคิดที่ฉันคิดว่ายากมากที่จะเข้าใจใน Java :) อาจเป็นเพราะมันโง่เกินไป
ความหมายของคำหลักนี้: ด้ามจับที่สอดคล้องกันสามารถสร้างขึ้นได้สำหรับวัตถุที่มีวิธีการเรียก
คุณเข้าใจข้อความนี้ได้อย่างไร?
มีตัวอย่างในการคิดใน Java
มีวัตถุสองชนิดที่เรียกว่า A และ B ตามลำดับ ดังนั้นเราจะแยกแยะความแตกต่างระหว่างผู้ที่เรียกวิธีนี้ได้อย่างไรเมื่อเรียกวิธีการ f ()
ตัวอย่างเช่น:
Banana คลาส {void f (int i) {/*** วิธีการร่างกาย *****/}} Banana a = Banana (); // สร้างวัตถุกล้วย Abanana b = กล้วยใหม่ (); // สร้างวัตถุกล้วย ba.f (1); bf (2);แล้วคอมไพเลอร์รู้ได้อย่างไรว่าคุณกำลังเรียกใช้ฟังก์ชัน F () ของวัตถุใด ในความเป็นจริงการถ่ายทอดทางไกลเบื้องหลังควรเป็น:
af (1) << ==== >> Banana.f (a, 1); bf (1) << ==== >> Banana.f (b, 2);
ฉันเข้าใจว่า: เมื่อสร้างวัตถุกล้วย เมื่อเรียกเมธอด f () ของ A มือจับที่ชี้ไปที่วัตถุนี้จะถูกสร้างขึ้นในเวลาเดียวกัน
นี่คือวัตถุที่ชี้ให้เห็นนี้กล้วยใหม่ () หรือสิ่งนี้เทียบเท่ากับการจัดการ A; "==" a;
เมื่อเราอยู่ในวิธีการ และเราหวังว่าจะได้รับการจัดการของวัตถุปัจจุบัน เนื่องจากด้ามจับนี้ถูกส่งผ่านโดยคอมไพเลอร์อย่างลับๆจึงไม่มีสัญลักษณ์ที่ชัดเจนในการระบุ ในเวลานี้เราสามารถใช้คำหลักนี้ได้
ความหมายทั่วไปของสิ่งนี้: ไม่ว่าวัตถุใดที่สร้างการเรียกใช้วิธีนี้ตัวชี้ไปยังวัตถุนี้จะถูกสร้างขึ้น
ตัวอย่างคลาสสิกในการคิดใน Java:
Public Class Leaf {Private Int i = 0; leaf increment () {i ++; return this;} void print () {systme.out.println ("i ="+i); โมฆะคงที่สาธารณะ (สตริง [] args) {leaf x = new leaf (); x.increment ()1. สร้างที่จับ X ของวัตถุ; รูปแบบไวยากรณ์คือ leaf x;
2. สร้างวัตถุระดับใบไม้ รูปแบบไวยากรณ์คือ New Leaf ();
3. สร้างการเชื่อมต่อระหว่างที่จับและวัตถุ; ไวยากรณ์คือ x = new leaf ();
4. เรียกวิธีการเพิ่มขึ้น () ในวัตถุใหม่ใบ (); ไวยากรณ์คือ x.increment ()
×××ใครเรียกว่าวิธีการเพิ่มขึ้น ()? มันเป็นวัตถุ x (หรือ leaf ()) ของคลาสใบไม้ดังนั้นระบบที่สอดคล้องกันจะสร้างการอ้างอิงสิ่งนี้และแอบชี้ไปที่ x หรือใหม่ leaf () วัตถุดังนั้นการเพิ่มขึ้น () ส่งกลับการอ้างอิงถึง x! มันเป็นที่อยู่หน่วยความจำ เราสามารถพิมพ์ออกมาและดูได้!
เนื้อหาข้างต้นคือความรู้เกี่ยวกับคำหลักนี้ใน Java ที่แนะนำโดยบรรณาธิการ ฉันหวังว่ามันจะเป็นประโยชน์กับคุณ!