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

สารบัญ:

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

วีดีโอ: ความแตกต่างระหว่างการเอาชนะและการโอเวอร์โหลดใน C

วีดีโอ: ความแตกต่างระหว่างการเอาชนะและการโอเวอร์โหลดใน C
วีดีโอ: Overloading and Overriding - C# Gotcha Interview Questions 2024, กรกฎาคม
Anonim

ความแตกต่างที่สำคัญ – การเอาชนะและการโอเวอร์โหลดใน C

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

C เป็นภาษาโปรแกรมทั่วไปที่พัฒนาโดย Microsoft ข้อได้เปรียบหลักของ C คือรองรับ Object Oriented Programming (OOP) เสาหลักของ OOP คือ Polymorphism ทำให้วัตถุมีพฤติกรรมหลายอย่าง Polymorphism มีสองประเภทที่เรียกว่าการเอาชนะและการโอเวอร์โหลด บทความนี้กล่าวถึงความแตกต่างระหว่างการแทนที่วิธีการและการโอเวอร์โหลดใน C

การเอาชนะใน C คืออะไร

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

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

รูปที่ 01: โปรแกรม C ที่มีการเอาชนะ

ตามโปรแกรมด้านบน คลาส Shape เป็นคลาสพื้นฐาน และประกอบด้วยวิธีการแสดง Class Rectangle และ Triangle เป็นคลาสที่ได้รับ คลาสที่ได้รับเหล่านี้ยังมีการแสดงเมธอดเดียวกันกับการใช้งานของตัวเอง

ขั้นแรก obj ตัวแปรอ้างอิงจะถูกสร้างขึ้น มันชี้ไปที่วัตถุรูปร่าง ดังนั้นวิธีการแสดงของคลาส Shape จะดำเนินการ จากนั้น ตัวแปรอ้างอิงจะชี้ไปที่อ็อบเจ็กต์ Rectangle ดังนั้นวิธีการแสดงของคลาส Rectangle จะดำเนินการ สุดท้าย ตัวแปรอ้างอิงจะชี้ไปที่วัตถุสามเหลี่ยม ดังนั้นวิธีการแสดงของคลาส Triangle จะดำเนินการ วิธีการแสดงคลาสพื้นฐานถูกแทนที่โดยวิธีการแสดงของคลาสที่ได้รับ

วิธีการรันจะถูกกำหนดเมื่อรันไทม์ คลาส Shape เขียนด้วยคีย์เวิร์ด 'เสมือน' คลาส Rectangle และ Triangle เขียนด้วยคีย์เวิร์ด 'override' หากไม่ได้ใช้คีย์เวิร์ดเหล่านี้ ผลลัพธ์จะพิมพ์เนื้อหาของวิธีการแสดงของคลาส Shape สำหรับทุกคน

โอเวอร์โหลดใน C คืออะไร

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

ความแตกต่างที่สำคัญระหว่างการเอาชนะและการโอเวอร์โหลดใน C
ความแตกต่างที่สำคัญระหว่างการเอาชนะและการโอเวอร์โหลดใน C

รูปที่ 02: โปรแกรม C ที่มีการโอเวอร์โหลด

ตามโปรแกรมข้างต้น class A มีสองวิธีที่มีชื่อเดียวกันเรียกว่า sum มีพารามิเตอร์ประเภทต่างๆ ในโปรแกรมหลัก วัตถุของ A จะถูกสร้างขึ้น ผลรวม (2, 3) จะเรียกใช้วิธีผลรวมด้วยจำนวนเต็ม ผลรวม (5.1, 7.94) จะเรียกใช้วิธีผลรวมที่มีค่าสองเท่า ทั้งสองวิธีมีชื่อและพารามิเตอร์เท่ากัน แต่ประเภทพารามิเตอร์ต่างกัน วิธีการที่ต้องการจะเรียกตามนั้น การโอเวอร์โหลดอาจเกิดขึ้นได้หากชื่อเมธอดและประเภทพารามิเตอร์เหมือนกัน แต่จำนวนพารามิเตอร์ต่างกัน

ความคล้ายคลึงกันระหว่างการเอาชนะและการโอเวอร์โหลดใน C คืออะไร

ทั้ง Overriding และ Overloading ใน C เป็นประเภทของ polymorphism

ความแตกต่างระหว่างการเอาชนะและการโอเวอร์โหลดใน C คืออะไร

การเอาชนะ vs การโอเวอร์โหลดใน C

การแทนที่ใน C คือการจัดเตรียมการใช้งานเฉพาะในวิธีการคลาสที่ได้รับสำหรับวิธีการที่มีอยู่แล้วในคลาสพื้นฐาน การโอเวอร์โหลดในภาษา C คือการสร้างเมธอดที่มีชื่อเดียวกันแต่มีการใช้งานต่างกัน
พารามิเตอร์
ในการเอาชนะ C เมธอดมีชื่อเหมือนกัน ประเภทพารามิเตอร์เหมือนกัน และจำนวนพารามิเตอร์เท่ากัน ในการโอเวอร์โหลด C เมธอดมีชื่อเหมือนกันแต่จำนวนพารามิเตอร์ต่างกันหรือพารามิเตอร์ประเภทอื่น
เกิดขึ้น
ใน C การแทนที่จะเกิดขึ้นภายในคลาสฐานและคลาสที่ได้รับ ใน C การโอเวอร์โหลดเกิดขึ้นภายในคลาสเดียวกัน
เวลาผูกมัด
การเชื่อมโยงของการเรียกใช้เมธอดที่ถูกแทนที่ไปยังคำจำกัดความจะเกิดขึ้นที่รันไทม์ การโยงของการเรียกเมธอดที่โอเวอร์โหลดไปยังคำจำกัดความเกิดขึ้น ณ เวลาคอมไพล์
คำพ้องความหมาย
การแทนที่เรียกว่าความแตกต่างระหว่างรันไทม์ ความหลากหลายไดนามิก หรือการผูกปลาย การโอเวอร์โหลดเรียกว่า compile time polymorphism, static polymorphism หรือ early binding

สรุป – การเอาชนะและการโอเวอร์โหลดใน C

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