ชั้นเรียนนักเรียน:
แพ็คเกจโคลนโคลน;/*ไปยังโคลนข้อแก้ตัวนี้จะต้องดำเนินการ: cloneable, เพื่อทำเครื่องหมายวัตถุนี้, cloneable: คลาสนี้ใช้อินเตอร์เฟส cloneable เพื่อระบุว่า method.clone () สามารถคัดลอกอินสแตนซ์ของคลาสนี้ตามกฎหมายได้อย่างถูกกฎหมาย อินเทอร์เฟซนี้เป็นอินเทอร์เฟซแท็กบอกเราว่าคลาสที่ใช้อินเทอร์เฟซนี้สามารถตระหนักถึงการคัดลอกวัตถุ */นักเรียนชั้นเรียนสาธารณะใช้ cloneable {ชื่อสตริงส่วนตัว; อายุ int ส่วนตัว; นักเรียนสาธารณะ () {} นักเรียนสาธารณะ (ชื่อสตริง, อายุ int) {super (); this.name = name; this.age = อายุ;} public String getName () {ชื่อคืน {this.age = age;} // rewrite วิธีการโคลนนิ่ง subcolumn เพื่อโทร @OverrideProtected clone () พ่น clonenotsupportException {return super.clone ();}}}ทดสอบการโคลนนิ่งชั้นเรียนนักเรียน:
แพ็คเกจโคลนโคลน;/ * * โมฆะป้องกันการสรุป (): วิธีนี้เรียกโดยตัวเก็บขยะของวัตถุเมื่อตัวเก็บขยะขยะกำหนดว่าไม่มีการอ้างอิงถึงวัตถุอีกต่อไป ใช้สำหรับการรีไซเคิลขยะ แต่ก็ไม่แน่ใจว่าจะรีไซเคิลเมื่อใด *วัตถุที่ได้รับการป้องกัน (): สร้างและส่งคืนสำเนาของวัตถุนี้ * A: เขียนวิธีนี้ใหม่ * * cloneable: คลาสนี้ใช้อินเตอร์เฟส cloneable เพื่อระบุว่า method.clone () วิธีการสามารถคัดลอกอินสแตนซ์ของคลาสนี้ตามกฎหมายโดยฟิลด์ * อินเทอร์เฟซนี้เป็นอินเทอร์เฟซแท็กบอกเราว่าคลาสที่ใช้งานอินเตอร์เฟสนี้สามารถตระหนักถึงการคัดลอกวัตถุ */ชั้นเรียนสาธารณะนักศึกษา clone {โมฆะคงที่สาธารณะหลัก (สตริง [] args) พ่น clonenotsupportedexception {// สร้างนักเรียนวัตถุนักเรียน s = นักเรียนใหม่ (); s.setname ("Qingxia lin"); s.setage (27); // โคลน (นักเรียน) obj; System.out.println ("------------"); System.out.println (s.getName ()+"----"+s.getage ()); system.out.println (s2.getName ()+"---"+s2.getage (); s; system.out.println (s3.getName ()+"---"+s3.getage ()); system.out.println ("--------------"); // ในความเป็นจริงมีความแตกต่าง s3.setName ("liu yi"); s3.setage (30); system.out.println -"+s.getage ()); system.out.println (s2.getName ()+" --- "+s2.getage ()); system.out.println (s3.getName ()+" --- "+s3.getage ()); system.out.out.println (" ---------- "); S2.SetName ("เปลี่ยนโคลน ชื่อ "); s2.setage (66); system.out.println (s.getName ()+" --- "+s.getage ()); system.out.println (s2.getName ()+" --- "+s2.ge tage ()); system.out.println (s3.getName ()+"---"+s3.getage ()); system.out.println (s3.getName ()+"---"+s3.getage ()); // ใน คำอื่น ๆ กำหนดการอ้างอิงของวัตถุให้กับการอ้างอิง เมื่อการอ้างอิงถูกส่งไปยังบางสิ่งวัตถุที่ชี้ไปที่การอ้างอิงเดียวกันจะเปลี่ยนไป แต่วัตถุที่ถูกโคลนจะไม่เปลี่ยนแปลง // เปลี่ยนคุณสมบัติบางอย่างเป็นวัตถุโคลนมันจะไม่ส่งผลกระทบต่อการเปลี่ยนแปลงของค่าของวัตถุอื่น}}}ข้างต้นเป็นเนื้อหาทั้งหมดที่ตัวแก้ไขนำมาให้คุณเกี่ยวกับความแตกต่างระหว่างการโคลนปิด () และการอ้างอิงการมอบหมายใน Java ฉันหวังว่ามันจะเป็นประโยชน์กับทุกคนและสนับสนุน wulin.com เพิ่มเติม ~