บทความนี้จะกล่าวถึงรายละเอียดเกี่ยวกับการใช้งานและการปรับใช้เมธอดแทนที่ใน Java
“ การเอาชนะเมธอด” ใน Java คืออะไร
ถ้าคลาสลูกมีเมธอดที่คล้ายกันตามที่ระบุในคลาสแม่ จะเรียกว่า “ วิธีการเอาชนะ ” ในภาษาจาวา เมื่อทำเช่นนั้น ฟังก์ชันการทำงานของคลาสลูก เช่น เมธอดที่ถูกแทนที่จะมีผล
ข้อควรพิจารณาสำหรับ “การแทนที่เมธอด” ใน Java
- เมธอดต้องมีชื่อเหมือนกับในคลาสพาเรนต์
- เมธอดควรมีพารามิเตอร์เหมือนกันในคลาสพาเรนต์
- วิธีการจัดสรรเป็น “ สุดท้าย ไม่สามารถลบล้างได้
ตัวอย่างที่ 1: การแทนที่เมธอดใน Java
ในตัวอย่างนี้ วิธีการแทนที่วิธีการ เช่น “ การทำงาน ” สามารถดำเนินการได้ทางมรดก:
ระดับ พ่อแม่ {
สาธารณะ เป็นโมฆะ โชว์เอาท์ ( ) {
ระบบ . ออก . พิมพ์ ( 'นี่คือลินุกซ์ชินท์!' ) ;
} }
ระดับ เด็ก ขยาย พ่อแม่ {
สาธารณะ เป็นโมฆะ โชว์เอาท์ ( ) {
ระบบ . ออก . พิมพ์ ( 'นี่คือชวา!' ) ;
} }
สาธารณะ ระดับ ตัวอย่าง {
สาธารณะ คงที่ เป็นโมฆะ หลัก ( สตริง [ ] หาเรื่อง ) {
เด็ก obj = ใหม่ เด็ก ( ) ;
คัดค้าน โชว์เอาท์ ( ) ;
} }
ในการสาธิตข้างต้น ใช้ขั้นตอนต่อไปนี้:
- ขั้นแรก สร้าง parent(super) class ชื่อ “ พ่อแม่ '.
- ภายในคลาสนี้ ให้กำหนดฟังก์ชันชื่อ “ โชว์เอาท์() ” และแสดงข้อความที่กำหนดในนิยาม (ฟังก์ชัน)
- หลังจากนั้น สร้าง child(sub) class ชื่อ “ เด็ก ” สืบสาน “ พ่อแม่ ” เรียนผ่าน “ ขยาย ' คำสำคัญ.
- ในคลาสนี้ แทนที่ฟังก์ชันที่กำหนดภายในคลาสพาเรนต์โดยกำหนดด้วยชื่อที่เหมือนกัน “ โชว์เอาท์() ” และแสดงข้อความที่ระบุ
- โดยหลักแล้ว ให้สร้างอ็อบเจกต์ของคลาสลูกผ่านปุ่ม “ ใหม่ ” คำหลักและ “ เด็ก() ” ตัวสร้าง
- สุดท้าย เรียกใช้ฟังก์ชัน “ โชว์เอาท์() ” โดยอ้างถึงวัตถุที่สร้างขึ้น สิ่งนี้จะเรียกใช้ฟังก์ชันแทนที่แทนที่จะเป็นค่าเริ่มต้นในคลาสพาเรนต์
เอาต์พุต
จากผลลัพธ์ข้างต้น สามารถวิเคราะห์ได้ว่าฟังก์ชันหลัง เช่น การแทนที่มีผลใช้บังคับ
ตัวอย่างที่ 2: การใช้คีย์เวิร์ด “super” ในการแทนที่เมธอดโดยใช้ Java
ในตัวอย่างนี้ ' สุดยอด ” คีย์เวิร์ดสามารถเชื่อมโยงเพื่อเรียกใช้ฟังก์ชันของทั้งค่าดีฟอลต์ เช่น พาเรนต์และเมธอดที่ถูกแทนที่:
ระดับ พ่อแม่ {สาธารณะ เป็นโมฆะ โชว์เอาท์ ( ) {
ระบบ . ออก . พิมพ์ ( 'นี่คือลินุกซ์ชินท์!' ) ;
} }
ระดับ เด็ก ขยาย พ่อแม่ {
สาธารณะ เป็นโมฆะ โชว์เอาท์ ( ) {
สุดยอด . โชว์เอาท์ ( ) ;
ระบบ . ออก . พิมพ์ ( 'นี่คือชวา!' ) ;
} }
สาธารณะ ระดับ ตัวอย่าง {
สาธารณะ คงที่ เป็นโมฆะ หลัก ( สตริง [ ] หาเรื่อง ) {
เด็ก obj = ใหม่ เด็ก ( ) ;
คัดค้าน โชว์เอาท์ ( ) ;
} }
ในบล็อกรหัสด้านบน:
- ในทำนองเดียวกัน สร้างคลาสพาเรนต์ชื่อ “ พ่อแม่ ” และสะสมฟังก์ชัน “ โชว์เอาท์() ” ในนั้นแสดงข้อความที่ให้ไว้
- ในขั้นตอนถัดไป สร้างคลาสย่อยชื่อ “ เด็ก ” สืบทอดคลาสพาเรนต์
- ภายในคลาสนี้ แทนที่ฟังก์ชันที่เหมือนกันในทำนองเดียวกัน นอกจากนี้ยังเชื่อมโยง ' สุดยอด ” คีย์เวิร์ดที่มีฟังก์ชันเรียกใช้ค่าดีฟอลต์ เช่น ฟังก์ชันของฟังก์ชันคลาสพาเรนต์
- สุดท้าย สร้างวัตถุของคลาสลูกและเรียกใช้ฟังก์ชันแทนที่
- อัลกอริทึม: การดำเนินการจะทำในลักษณะที่เมื่อมีการเรียกใช้ฟังก์ชันแทนที่และ ' สุดยอด ” คำหลักจะอ้างถึงฟังก์ชันระดับผู้ปกครอง ซึ่งจะส่งผลให้เกิดการบันทึกฟังก์ชันการทำงานของทั้งคลาสหลักและคลาสย่อยพร้อมกันบนคอนโซล
เอาต์พุต
เอาต์พุตด้านบนแสดงว่าเอฟเฟกต์ของฟังก์ชันลบล้างสามารถยกเลิกได้เช่นกันผ่าน ' สุดยอด ' คำสำคัญ.
ตัวอย่างที่ 3: การแทนที่เมธอด “final” ใน Java
ในตัวอย่างนี้ ฟังก์ชันสามารถจัดสรรเป็น “ สุดท้าย ” ในคลาสแม่และวิเคราะห์ในภายหลังโดยการเข้าถึงในคลาสลูก:
ระดับ พ่อแม่ {สุดท้าย สาธารณะ เป็นโมฆะ โชว์เอาท์ ( ) {
ระบบ . ออก . พิมพ์ ( 'นี่คือลินุกซ์ชินท์!' ) ;
} }
ระดับ เด็ก ขยาย พ่อแม่ {
สาธารณะ เป็นโมฆะ โชว์เอาท์ ( ) {
ระบบ . ออก . พิมพ์ ( 'นี่คือชวา!' ) ;
} }
สาธารณะ ระดับ ตัวอย่าง {
สาธารณะ คงที่ เป็นโมฆะ หลัก ( สตริง [ ] หาเรื่อง ) {
เด็ก obj = ใหม่ เด็ก ( ) ;
คัดค้าน โชว์เอาท์ ( ) ;
} }
ตามรหัสที่ให้ไว้ด้านบน ใช้ขั้นตอนด้านล่าง:
- สร้างคลาสพาเรนต์ “ พ่อแม่ '.
- ภายในคลาสนี้ จัดสรรฟังก์ชัน “ โชว์เอาท์() ' เช่น ' สุดท้าย ” ตามที่ระบุโดยคำสำคัญก่อนหน้า
- ตอนนี้สืบทอดคลาสลูก ' เด็ก ” จากที่เคยอภิปรายในชั้นเรียน ที่นี่แทนที่การจัดสรร ' สุดท้าย ” ฟังก์ชันในคลาสพาเรนต์
- ในหลัก สร้างวัตถุของ “ เด็ก ” คลาสและเรียกใช้ฟังก์ชันแทนที่
เอาต์พุต
การดำเนินการของรหัสข้างต้นจะบันทึกข้อผิดพลาดที่แสดงตั้งแต่ “ สุดท้าย ” ไม่สามารถแทนที่เมธอดได้
บทสรุป
ถ้าคลาสลูกมีเมธอดที่คล้ายกันตามที่ระบุในคลาสแม่ มันสอดคล้องกับการแทนที่เมธอดใน Java วิธีการนี้จะลบล้างวิธีการเดิมและนำวิธีหลังไปใช้ การเอาชนะสามารถทำได้ผ่าน ' สุดยอด ” หรือ “ สุดท้าย ” คำหลักในรูปแบบต่างๆ บล็อกนี้กล่าวถึงแนวคิดของวิธีการแทนที่ใน Java