วิธีการแทนที่ใน Java คืออะไร

Withi Kar Thaenthi Ni Java Khux Xari



ในขณะที่อัปเดตข้อมูลใน Java อาจมีข้อกำหนดให้แทนที่ฟังก์ชันการทำงานเฉพาะบางอย่างที่ทำให้โค้ดไม่เสียหาย ตัวอย่างเช่น การต่อท้ายฟังก์ชันใหม่บางอย่างในฟังก์ชันที่ถูกลบล้าง เพื่อให้คุณลักษณะเดิมยังคงอยู่ ในสถานการณ์เช่นนี้ “ วิธีการเอาชนะ ” ใน Java ทำสิ่งมหัศจรรย์ในการอัปเดตคุณสมบัติที่สะสมเป็นครั้งคราวในตอนท้ายของนักพัฒนา

บทความนี้จะกล่าวถึงรายละเอียดเกี่ยวกับการใช้งานและการปรับใช้เมธอดแทนที่ใน Java

“ การเอาชนะเมธอด” ใน Java คืออะไร

ถ้าคลาสลูกมีเมธอดที่คล้ายกันตามที่ระบุในคลาสแม่ จะเรียกว่า “ วิธีการเอาชนะ ” ในภาษาจาวา เมื่อทำเช่นนั้น ฟังก์ชันการทำงานของคลาสลูก เช่น เมธอดที่ถูกแทนที่จะมีผล







ข้อควรพิจารณาสำหรับ “การแทนที่เมธอด” ใน Java

  • เมธอดต้องมีชื่อเหมือนกับในคลาสพาเรนต์
  • เมธอดควรมีพารามิเตอร์เหมือนกันในคลาสพาเรนต์
  • วิธีการจัดสรรเป็น “ สุดท้าย ไม่สามารถลบล้างได้

ตัวอย่างที่ 1: การแทนที่เมธอดใน Java

ในตัวอย่างนี้ วิธีการแทนที่วิธีการ เช่น “ การทำงาน ” สามารถดำเนินการได้ทางมรดก:



ระดับ พ่อแม่ {

สาธารณะ เป็นโมฆะ โชว์เอาท์ ( ) {

ระบบ . ออก . พิมพ์ ( 'นี่คือลินุกซ์ชินท์!' ) ;

} }

ระดับ เด็ก ขยาย พ่อแม่ {

สาธารณะ เป็นโมฆะ โชว์เอาท์ ( ) {

ระบบ . ออก . พิมพ์ ( 'นี่คือชวา!' ) ;

} }

สาธารณะ ระดับ ตัวอย่าง {

สาธารณะ คงที่ เป็นโมฆะ หลัก ( สตริง [ ] หาเรื่อง ) {

เด็ก obj = ใหม่ เด็ก ( ) ;

คัดค้าน โชว์เอาท์ ( ) ;

} }

ในการสาธิตข้างต้น ใช้ขั้นตอนต่อไปนี้:



  • ขั้นแรก สร้าง parent(super) class ชื่อ “ พ่อแม่ '.
  • ภายในคลาสนี้ ให้กำหนดฟังก์ชันชื่อ “ โชว์เอาท์() ” และแสดงข้อความที่กำหนดในนิยาม (ฟังก์ชัน)
  • หลังจากนั้น สร้าง child(sub) class ชื่อ “ เด็ก ” สืบสาน “ พ่อแม่ ” เรียนผ่าน “ ขยาย ' คำสำคัญ.
  • ในคลาสนี้ แทนที่ฟังก์ชันที่กำหนดภายในคลาสพาเรนต์โดยกำหนดด้วยชื่อที่เหมือนกัน “ โชว์เอาท์() ” และแสดงข้อความที่ระบุ
  • โดยหลักแล้ว ให้สร้างอ็อบเจกต์ของคลาสลูกผ่านปุ่ม “ ใหม่ ” คำหลักและ “ เด็ก() ” ตัวสร้าง
  • สุดท้าย เรียกใช้ฟังก์ชัน “ โชว์เอาท์() ” โดยอ้างถึงวัตถุที่สร้างขึ้น สิ่งนี้จะเรียกใช้ฟังก์ชันแทนที่แทนที่จะเป็นค่าเริ่มต้นในคลาสพาเรนต์

เอาต์พุต





จากผลลัพธ์ข้างต้น สามารถวิเคราะห์ได้ว่าฟังก์ชันหลัง เช่น การแทนที่มีผลใช้บังคับ



ตัวอย่างที่ 2: การใช้คีย์เวิร์ด “super” ในการแทนที่เมธอดโดยใช้ Java

ในตัวอย่างนี้ ' สุดยอด ” คีย์เวิร์ดสามารถเชื่อมโยงเพื่อเรียกใช้ฟังก์ชันของทั้งค่าดีฟอลต์ เช่น พาเรนต์และเมธอดที่ถูกแทนที่:

ระดับ พ่อแม่ {

สาธารณะ เป็นโมฆะ โชว์เอาท์ ( ) {

ระบบ . ออก . พิมพ์ ( 'นี่คือลินุกซ์ชินท์!' ) ;

} }

ระดับ เด็ก ขยาย พ่อแม่ {

สาธารณะ เป็นโมฆะ โชว์เอาท์ ( ) {

สุดยอด . โชว์เอาท์ ( ) ;

ระบบ . ออก . พิมพ์ ( 'นี่คือชวา!' ) ;

} }

สาธารณะ ระดับ ตัวอย่าง {

สาธารณะ คงที่ เป็นโมฆะ หลัก ( สตริง [ ] หาเรื่อง ) {

เด็ก obj = ใหม่ เด็ก ( ) ;

คัดค้าน โชว์เอาท์ ( ) ;

} }

ในบล็อกรหัสด้านบน:

  • ในทำนองเดียวกัน สร้างคลาสพาเรนต์ชื่อ “ พ่อแม่ ” และสะสมฟังก์ชัน “ โชว์เอาท์() ” ในนั้นแสดงข้อความที่ให้ไว้
  • ในขั้นตอนถัดไป สร้างคลาสย่อยชื่อ “ เด็ก ” สืบทอดคลาสพาเรนต์
  • ภายในคลาสนี้ แทนที่ฟังก์ชันที่เหมือนกันในทำนองเดียวกัน นอกจากนี้ยังเชื่อมโยง ' สุดยอด ” คีย์เวิร์ดที่มีฟังก์ชันเรียกใช้ค่าดีฟอลต์ เช่น ฟังก์ชันของฟังก์ชันคลาสพาเรนต์
  • สุดท้าย สร้างวัตถุของคลาสลูกและเรียกใช้ฟังก์ชันแทนที่
  • อัลกอริทึม: การดำเนินการจะทำในลักษณะที่เมื่อมีการเรียกใช้ฟังก์ชันแทนที่และ ' สุดยอด ” คำหลักจะอ้างถึงฟังก์ชันระดับผู้ปกครอง ซึ่งจะส่งผลให้เกิดการบันทึกฟังก์ชันการทำงานของทั้งคลาสหลักและคลาสย่อยพร้อมกันบนคอนโซล

เอาต์พุต

เอาต์พุตด้านบนแสดงว่าเอฟเฟกต์ของฟังก์ชันลบล้างสามารถยกเลิกได้เช่นกันผ่าน ' สุดยอด ' คำสำคัญ.

ตัวอย่างที่ 3: การแทนที่เมธอด “final” ใน Java

ในตัวอย่างนี้ ฟังก์ชันสามารถจัดสรรเป็น “ สุดท้าย ” ในคลาสแม่และวิเคราะห์ในภายหลังโดยการเข้าถึงในคลาสลูก:

ระดับ พ่อแม่ {

สุดท้าย สาธารณะ เป็นโมฆะ โชว์เอาท์ ( ) {

ระบบ . ออก . พิมพ์ ( 'นี่คือลินุกซ์ชินท์!' ) ;

} }

ระดับ เด็ก ขยาย พ่อแม่ {

สาธารณะ เป็นโมฆะ โชว์เอาท์ ( ) {

ระบบ . ออก . พิมพ์ ( 'นี่คือชวา!' ) ;

} }

สาธารณะ ระดับ ตัวอย่าง {

สาธารณะ คงที่ เป็นโมฆะ หลัก ( สตริง [ ] หาเรื่อง ) {

เด็ก obj = ใหม่ เด็ก ( ) ;

คัดค้าน โชว์เอาท์ ( ) ;

} }

ตามรหัสที่ให้ไว้ด้านบน ใช้ขั้นตอนด้านล่าง:

  • สร้างคลาสพาเรนต์ “ พ่อแม่ '.
  • ภายในคลาสนี้ จัดสรรฟังก์ชัน “ โชว์เอาท์() ' เช่น ' สุดท้าย ” ตามที่ระบุโดยคำสำคัญก่อนหน้า
  • ตอนนี้สืบทอดคลาสลูก ' เด็ก ” จากที่เคยอภิปรายในชั้นเรียน ที่นี่แทนที่การจัดสรร ' สุดท้าย ” ฟังก์ชันในคลาสพาเรนต์
  • ในหลัก สร้างวัตถุของ “ เด็ก ” คลาสและเรียกใช้ฟังก์ชันแทนที่

เอาต์พุต

การดำเนินการของรหัสข้างต้นจะบันทึกข้อผิดพลาดที่แสดงตั้งแต่ “ สุดท้าย ” ไม่สามารถแทนที่เมธอดได้

บทสรุป

ถ้าคลาสลูกมีเมธอดที่คล้ายกันตามที่ระบุในคลาสแม่ มันสอดคล้องกับการแทนที่เมธอดใน Java วิธีการนี้จะลบล้างวิธีการเดิมและนำวิธีหลังไปใช้ การเอาชนะสามารถทำได้ผ่าน ' สุดยอด ” หรือ “ สุดท้าย ” คำหลักในรูปแบบต่างๆ บล็อกนี้กล่าวถึงแนวคิดของวิธีการแทนที่ใน Java