Skip to main content

วิธีการมากเกินไปคืออะไร?

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

ตัวอย่างง่าย ๆ ของวิธีการโอเวอร์โหลดจะเป็นวิธีที่คำนวณพื้นที่ของสี่เหลี่ยมจัตุรัสมันอาจถูกกำหนดให้เป็น getarea (square s)วิธีนี้อาจมีการโอเวอร์โหลดเพื่อคำนวณพื้นที่ของวงกลมเพิ่มเติมโดยการเพิ่มวิธีการ getarea (วงกลม C)

ข้อกำหนดหลักสำหรับวิธีการโอเวอร์โหลดคือวิธีการใช้ชื่อเดียวกันวิธีการของพวกเขาลายเซ็น mdash;ชื่อวิธีจำนวนพารามิเตอร์และประเภทข้อมูลพารามิเตอร์ mdash;ควรจะไม่ซ้ำกันด้วยวิธีนี้คอมไพเลอร์สามารถกำหนดวิธีที่จะดำเนินการ

ตัวสร้างวิธีการที่ใช้ในการสร้างอินสแตนซ์วัตถุมักจะเกินพิกัดสิ่งนี้ทำเพื่อเริ่มต้นวัตถุที่มีค่าที่ไม่ได้รับการป้องกันตัวอย่างเช่นวัตถุพนักงานที่มีสองฟิลด์ (ชื่อและวันเดือนปีเกิดหรือ DOB) อาจมีตัวสร้างเกินพิกัดดังต่อไปนี้: พนักงาน () พนักงาน (ชื่อ) และพนักงาน (ชื่อ, DOB)ตัวสร้างแรกสร้างวัตถุพนักงานที่มีชื่อว่างและฟิลด์ DOBชุดที่สองตั้งค่าฟิลด์ชื่อ แต่ปล่อยให้ฟิลด์ DOB ว่างเปล่าและที่สามกำหนดทั้งฟิลด์ชื่อและ DOB เมธอด overloading มักจะทำเพื่อให้มากกว่าหนึ่งวิธีปรากฏขึ้นอย่างมีเหตุผลเป็นวิธีเดียวในตัวอย่าง getArea () ในขณะที่มีสองวิธีทางร่างกายผู้โทรจะถูกนำเสนอด้วยวิธีการ getArea () ตรรกะเดียวด้วยวิธีนี้ getarea () สามารถขยายเพื่อทำงานกับรูปร่างอื่น ๆ mdash;รูปสามเหลี่ยมสี่เหลี่ยมคางหมูและอื่น ๆ mdash;ในขณะที่ยังคงนำเสนอตัวเองอย่างมีเหตุผลเป็นวิธีเดียว

วิธีการมากเกินไปเพื่อรักษาความเข้ากันได้ย้อนหลังวิธีการคำนวณที่ซับซ้อนอาจได้รับข้อกำหนดใหม่เพื่อเลือกการคำนวณเดียวกันโดยมีการเปลี่ยนแปลงเล็กน้อยมีการเพิ่มพารามิเตอร์ใหม่ในวิธีการที่จะกำหนดวิธีการคำนวณ mDash;วิธีเก่าหรือวิธีใหม่

เพื่อหลีกเลี่ยงการค้นหาทุกกรณีที่มีการเรียกวิธีการและเพิ่มพารามิเตอร์ใหม่วิธีการมากเกินไปวิธีใหม่จะมีลายเซ็นเก่าและถูกเรียกด้วยรหัสที่มีอยู่มันจะไม่มีตรรกะใด ๆ เองและจะเรียกวิธีการแก้ไขและส่งผ่านในค่าเริ่มต้นของ "วิธีเก่า" สำหรับพารามิเตอร์ใหม่รหัสใหม่จะเรียกวิธีการแก้ไขและผ่านพารามิเตอร์ใหม่ด้วยค่าที่เหมาะสมวิธีเก่าหรือวิธีใหม่

วิธีการโอเวอร์โหลดเป็นประเภทของ polymorphism ซึ่งวิธีการเชิงตรรกะเดียวกันในทางปฏิบัติใช้ในหลายวิธีวิธีการโอเวอร์โหลดไม่เหมือนกับวิธีการเอาชนะการเอาชนะวิธีการเป็นที่ที่คำจำกัดความของวิธีการในคลาสหลักจะเปลี่ยนไปโดยคลาสเด็กในกรณีนี้ทั้งสองวิธีจะมีลายเซ็นเดียวกัน