ความแตกต่างที่สำคัญ : การโหลดมากเกินไปหมายถึงการมีสองวิธีในคลาสเดียวกันที่มีชื่อเดียวกันและมีประเภทพารามิเตอร์ที่แตกต่างกันในขณะที่การแทนที่นั้นหมายถึงการมีสองวิธีที่แตกต่างกันในคลาสเดียวกันกับประเภทพารามิเตอร์เดียวกัน
เมธอดที่แทนที่และการโอเวอร์โหลดคือสองแนวคิดหรือเทคนิคที่ใช้ในภาษาโปรแกรม Java ทั้งแนวคิดอนุญาตให้โปรแกรมเมอร์จัดเตรียมการปรับใช้ที่แตกต่างกันสำหรับเมธอดภายใต้ชื่อเดียวกัน บทความนี้แตกต่างระหว่างสองแนวคิดของการเขียนโปรแกรม
การโอเวอร์โหลดฟังก์ชั่นหรือการโอเวอร์โหลดของเมธอดช่วยให้สามารถสร้างวิธีการต่าง ๆ ภายใต้ชื่อเดียวกันในคลาสเดียวกัน แต่แตกต่างกันในอินพุตและชนิดเอาต์พุตของฟังก์ชัน มันถูกกำหนดอย่างง่าย ๆ ว่าเป็นความสามารถของฟังก์ชั่นเดียวในการทำงานต่าง ๆ
ในการโหลดมากเกินไปวิธีการใช้งานร่วมกันชื่อเดียวกันเพราะพวกเขาทำงานที่คล้ายกัน นอกจากนี้การใช้งานมากเกินไปถือว่าเป็น polymorphic ในธรรมชาติ ฟังก์ชั่นที่มีการใช้งานที่แตกต่างกันขึ้นอยู่กับประเภทอาร์กิวเมนต์ที่ระบุ มันมักจะเกี่ยวข้องกับภาษาการเขียนโปรแกรมแบบคงที่ซึ่งบังคับใช้การตรวจสอบประเภทในการเรียกใช้ฟังก์ชั่น นอกจากนี้ยังถือว่าใช้งานได้จริงเนื่องจากช่วยให้โปรแกรมเมอร์เขียนวิธีการต่าง ๆ ในชั้นเรียนเดียวกัน อย่างไรก็ตามในการโหลดเกินตัวประมวลผลรันไทม์เปลี่ยนชื่อของวิธีการโอเวอร์โหลดทั้งหมดซึ่งอาจเป็นปัญหา
การแทนที่เมธอดในการเขียนโปรแกรมเชิงวัตถุเป็นคุณลักษณะที่อนุญาตให้คลาสย่อยหรือคลาสย่อยจัดเตรียมการนำไปใช้งานเฉพาะของเมธอดที่จัดเตรียมไว้แล้วโดยหนึ่งในซูเปอร์คลาสหรือคลาสพาเรนต์ การนำไปใช้ในคลาสย่อยจะแทนที่หรือแทนที่การนำไปใช้ในพาเรนต์คลาสโดยจัดเตรียมเมธอดภายใต้ชื่อเดียวกันพารามิเตอร์หรือลายเซ็นเดียวกันและชนิดส่งคืนเดียวกันเป็นเมธอดในคลาสพาเรนต์
ในการแทนที่เมธอดฟังก์ชันจะถูกกำหนดให้ทำงานเฉพาะในโปรแกรม การเอาชนะขึ้นอยู่กับการมีอยู่ของฟังก์ชันคลาสพื้นฐานสำหรับลักษณะที่ปรากฏ ที่นี่ฟังก์ชั่นที่ดำเนินการจะถูกกำหนดโดยวัตถุที่ใช้ในการเรียกใช้เช่นถ้าวัตถุของคลาสแม่ถูกใช้เพื่อเรียกใช้เมธอดจากนั้นฟังก์ชันในคลาสพาเรนต์จะถูกดำเนินการ การเอาชนะคือ polymorphic ในธรรมชาติ ช่วยในการออกแบบโปรแกรมตามพารามิเตอร์ implicit ตัวแรกซึ่งสามารถแก้ไขได้ที่ runtime มีบางภาษาใน java อนุญาตให้โปรแกรมเมอร์เพื่อป้องกันวิธีการแทนที่
การเปรียบเทียบระหว่างการบรรทุกเกินพิกัดและการแทนที่:
การบรรทุกเกินพิกัด | ที่เอาชนะ | |
คำนิยาม | มันหมายถึงการมีวิธีการเรียนที่เหมือนกันภายใต้ชื่อเดียวกัน แต่แต่ละวิธีมีพารามิเตอร์ที่แตกต่างกันหรือมีพารามิเตอร์เดียวกันที่มีประเภทและลำดับที่แตกต่างกัน | มันหมายถึงการมีคลาสย่อยที่มีวิธีการเดียวกันภายใต้ชื่อเดียวกันและพารามิเตอร์ประเภทเดียวกันและประเภทคืนเดียวกันเป็นซูเปอร์คลาส |
ความหมาย | หมายความว่ามีมากกว่าหนึ่งวิธีที่ใช้ชื่อเดียวกันในคลาสเดียวกัน แต่มีลายเซ็นที่แตกต่างกัน | หมายความว่าวิธีการของคลาสฐานถูกกำหนดอีกครั้งในคลาสที่ได้รับที่มีลายเซ็นเดียวกัน |
พฤติกรรม | มันจะเพิ่มหรือขยายไปยังพฤติกรรมของวิธีการ | มันเปลี่ยนพฤติกรรมที่มีอยู่ของวิธีการ |
ความแตกต่าง | มันเป็นช่วงเวลาที่รวบรวมความแตกต่าง | มันเป็นความแตกต่างเวลาทำงาน |
วิธีการคงที่ | วิธีการคงที่สามารถมากเกินไป | วิธีการคงที่ไม่สามารถแทนที่ |
พันธบัตร | พันธบัตรคงที่ | พันธะแบบไดนามิก |
มรดก | มันอาจจะหรืออาจไม่ต้องการมรดก | มันต้องมีการสืบทอดเสมอ |
สมาคม | มันมักจะเกี่ยวข้องกับภาษาโปรแกรมแบบคงที่ | มันมักจะเกี่ยวข้องกับโปรแกรมที่มุ่งวัตถุ |
ลายเซ็น | วิธีการมีลายเซ็นที่แตกต่างกัน | วิธีการต้องมีลายเซ็นเดียวกัน |
ความเร็ว | มันเร็วกว่าการเอาชนะ | มันช้าเมื่อเทียบกับการบรรทุกเกินพิกัด |
การเรียนการสอน | มันไม่ต้องการมากกว่าหนึ่งคลาสสำหรับการโอเวอร์โหลด | มันต้องการอย่างน้อยสองคลาสสำหรับการโอเวอร์โหลด |
ชั้น | วิธีการสามารถมีระดับการเข้าถึงใด ๆ | วิธีการนั้นมีระดับการเข้าถึงที่เหมือนกันหรือกว้าง |
ตัวอย่าง | เพิ่มระดับ { ผลรวม int (int a, int b) { คืน a + b } ผลรวม int (int a) { ส่งกลับ +10; } } | Class A // Super Class { แสดงเป็นโมฆะ (int NUM) { พิมพ์ NUM; } } // Class B สืบทอดคลาส A คลาส B // คลาสย่อย { แสดงเป็นโมฆะ (int NUM) { พิมพ์ NUM; } } |