ใน C # มีสองกลไกสำหรับการกำหนดใหม่หรือจัดให้มีการนำวิธีการของคลาสพาเรนต์มาใช้ใหม่โดยคลาสย่อยและกลไกทั้งสองนี้เรียกว่าการแทนที่เมธอดและการซ่อนเมธอด บนพื้นฐานของวิธีการนำวิธีการกลับมาใช้ใหม่ เราสามารถแยกแยะระหว่างทั้งสองวิธีได้
ต่อไปนี้เป็นข้อแตกต่างที่สำคัญระหว่างการแทนที่เมธอดและการซ่อนเมธอด
ซีเนียร์ เลขที่ | คีย์ | วิธีการเอาชนะ | วิธีซ่อน |
---|---|---|---|
1 | คำจำกัดความ | Method Overriding เป็นกลไกในการบรรลุ polymorphism โดยที่ super class และ sub class มีเมธอดเหมือนกัน รวมถึงพารามิเตอร์และลายเซ็น และเมื่อคุณเรียกมันโดยใช้ sub class object การใช้งานใน subclass จะถูกเรียกใช้ | ในทางกลับกัน Method Hiding สามารถกำหนดเป็นเทคนิคที่ผู้ใช้สามารถกำหนดวิธีการของคลาสเบสหรือพาเรนต์ใหม่โดยใช้คีย์เวิร์ดใหม่ ซึ่งส่งผลให้มีการซ่อนการใช้งานพื้นฐานหลักโดยคลาสพื้นฐานของเมธอดนั้น |
2 | การเข้าถึงการใช้งานหลัก | In Method Overriding child class สามารถเข้าถึงการใช้งานวิธีการของ parent class ได้ | ในกรณีที่ Method Hiding parent class method ไม่สามารถเข้าถึงได้ผ่านการอ้างอิงคลาสย่อย |
3 | ตัวดัดแปลงที่ใช้ | สำหรับคำหลักที่ใช้แทนที่วิธีการแทนที่เมธอด | ในกรณีที่ Method Hiding new keyword ใช้เพื่อกำหนดการใช้งานใหม่ในคลาสย่อย |
4 | ประเภทการใช้งาน | ในเมธอด การแทนที่ประเภทการใช้งานของเมธอดนั้นเป็นประเภทอ็อบเจกต์ | อย่างไรก็ตาม ประเภทการใช้งานวิธีการซ่อนเมธอดเป็นประเภทอ้างอิง |
5 | การอ้างอิงจากพ่อแม่สู่ลูก | ใน Method Overriding เมื่อตัวแปรอ้างอิงคลาสพาเรนต์ชี้ไปที่อ็อบเจ็กต์ของคลาสย่อย จากนั้นจะเรียกเมธอดที่ถูกแทนที่ในคลาสย่อย | ในอีกทางหนึ่งในการซ่อนเมธอด เมื่อตัวแปรอ้างอิงคลาสพาเรนต์ชี้ไปที่อ็อบเจกต์ของคลาสลูก มันจะเรียกเมธอดที่ซ่อนอยู่ในคลาสพาเรนต์ |
6 | การใช้งาน | Method Overrides กำหนดการใช้วิธีการใหม่เท่านั้น | การซ่อนวิธีการสามารถกำหนดวิธีการใหม่ได้อย่างสมบูรณ์ |