วิธีการโอเวอร์โหลด
หัวข้อใหม่และน่าสนใจของเราในวันนี้คือวิธีการโอเวอร์โหลด ระวัง — การโอเวอร์โหลดเมธอดต้องไม่สับสนกับการโอเวอร์ไรด์เมธอด
การโอเวอร์โหลดเป็นการดำเนินการที่ง่ายมาก จริงๆ แล้วมันไม่ใช่การดำเนินการกับเมธอด แม้ว่าบางครั้งมันถูกอ้างถึงด้วยคำว่าparametric polymorphism ที่น่ากลัว
ปัญหาคือทุกเมธอดในคลาสต้องมีชื่อเฉพาะ นั่นไม่ถูกต้องทั้งหมด ถูกต้องกว่านั้น มันไม่แม่นยำเลย ชื่อเมธอดไม่จำเป็นต้องซ้ำกัน สิ่งที่ต้องไม่ซ้ำกันคือการรวมกันของชื่อเมธอดและประเภทของพารามิเตอร์ของเมธอด การรวมกันนี้เรียกว่าลายเซ็นเมธอด
ตัวอย่าง:
รหัส | คำอธิบาย |
---|---|
|
สิ่งนี้ได้รับอนุญาต ทั้งสองวิธีมีชื่อเฉพาะ |
|
และสิ่งนี้ด้วย ทั้งสองวิธีมีชื่อเฉพาะ (ลายเซ็น) |
|
วิธีการยังคงเป็นเอกลักษณ์ |
|
แต่สิ่งนี้ไม่อนุญาต วิธีการจะไม่ซ้ำกัน แม้จะคืนคนละแบบ. |
|
แต่คุณสามารถทำได้ พารามิเตอร์เมธอดไม่ซ้ำกัน |
ลายเซ็นประกอบด้วยชื่อเมธอดและประเภทพารามิเตอร์ โดยจะไม่รวม ประเภทการส่ง คืนของเมธอดและชื่อพารามิเตอร์ คลาสไม่สามารถมี 2 เมธอดที่มีลายเซ็นเดียวกันได้ — คอมไพเลอร์ไม่รู้ว่าควรเรียกเมธอดใด
ชื่อพารามิเตอร์ไม่สำคัญเนื่องจากจะสูญหายระหว่างการคอมไพล์ เมื่อเมธอดถูกคอมไพล์แล้วจะทราบเฉพาะชื่อและประเภทพารามิเตอร์เท่านั้น ประเภทการส่งคืนจะไม่สูญหาย แต่ไม่จำเป็นต้องกำหนดผลลัพธ์ของเมธอดให้กับสิ่งใด ดังนั้นจึงไม่รวมอยู่ในลายเซ็นด้วย
ตาม หลักการของ OOPความหลากหลายจะซ่อนการใช้งานที่แตกต่างกันไว้เบื้องหลังอินเทอร์เฟซเดียว เมื่อเราเรียกSystem.out.println()
เมธอด ตัวอย่างเช่น เมธอดต่างๆ จะถูกเรียกขึ้นอยู่กับอาร์กิวเมนต์ที่ส่งผ่าน นี่คือความหลากหลายในการดำเนินการ
นั่นเป็นเหตุผลว่าทำไมเมธอดต่างๆ ที่มีชื่อเหมือนกันในคลาสเดียวกันจึงถูกพิจารณาว่าเป็นรูปแบบที่อ่อนแอของความหลากหลาย
GO TO FULL VERSION