ความแตกต่างระหว่างการโอเว่อร์และการโอเวอร์โหลด

Anonim

การเอาชนะและการโอเวอร์โหลด

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

การเอาชนะคืออะไร?

ดังที่ได้กล่าวมาแล้ว class สามารถขยาย super class หรือ parent class ในภาษาโปรแกรมเชิงวัตถุ ชั้นเด็กสามารถมีวิธีการของตนเองหรืออาจมีการใช้งานของตัวเองกับวิธีการที่กำหนดไว้ในคลาสแม่ (หรือชั้นเรียนผู้ปกครองคนใดคนหนึ่ง) ดังนั้นเมื่อหลังเกิดขึ้นจะเรียกว่าวิธีเอาชนะ กล่าวอีกนัยหนึ่งถ้าชั้นลูกให้การใช้กับวิธีการที่มีลายเซ็นและชนิดส่งคืนเดียวกันเป็นวิธีที่กำหนดไว้ในคลาสแม่ของตนแล้ววิธีการหนึ่งดังกล่าวถูกแทนที่ด้วยการใช้คลาสลูก. ดังนั้นหากมีวิธีการแทนที่ในคลาสระบบรันไทม์จะต้องตัดสินใจว่าจะใช้การใช้วิธีใด ปัญหานี้ได้รับการแก้ไขโดยการดูชนิดของวัตถุที่ถูกต้องที่ใช้ในการเรียกใช้ ถ้าวัตถุของคลาสแม่ใช้ในการเรียกใช้เมธอด overridden การใช้งานในคลาสแม่จะถูกใช้งาน ในทำนองเดียวกันถ้าเป็นออบเจกต์ของคลาสย่อยที่ใช้งานแล้วการใช้งานชั้นเรียนของเด็กจะถูกใช้งาน ภาษาโปรแกรมสมัยใหม่เช่น Java, Eifell, C ++ และ Python ช่วยให้สามารถแทนที่ได้

การโอเวอร์โหลดคืออะไร?

การโอเวอร์โหลดเป็นคุณลักษณะที่มีให้โดยภาษาโปรแกรมบางภาษาเพื่อสร้างมากกว่าหนึ่งวิธีที่มีชื่อเดียวกัน แต่มีอินพุตและเอาต์พุตแบบต่างๆ ในภาษาโปรแกรมสมัยใหม่เช่น Java, C #, C + + และ VB NET คุณลักษณะนี้จะพร้อมใช้งาน คุณสามารถโอเวอร์โหลดเมธอดได้ด้วยการสร้างเมธอดอื่นที่มีชื่อเดียวกัน แต่ใช้ลายเซ็นของวิธีการที่แตกต่างกันหรือแบบส่งคืนที่แตกต่างกัน (หรือทั้งสองอย่าง) ตัวอย่างเช่นถ้าคุณมีเมธอด type1 (type1 t1) และ method1 (type2 t2) ภายในคลาสเดียวกันระบบจะโหลดมากเกินไป จากนั้นระบบจะต้องตัดสินใจว่าจะใช้งานระบบใดเมื่อได้รับการเรียก ความแตกต่างนี้เกิดจากการดูชนิดของพารามิเตอร์ที่ส่งผ่านไปยังวิธีการ ถ้าอาร์กิวเมนต์เป็น type1 การเรียกใช้งานครั้งแรกจะเรียกว่า while ในกรณีที่เป็น type2 จากนั้นจะเรียกใช้งานที่สอง

อะไรคือความแตกต่างระหว่าง Overriding และ Overloading?

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

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