แนะนำ, 2024

ตัวเลือกของบรรณาธิการ

ความแตกต่างระหว่างวิธีการมากไปและการเอาชนะ

วิธีการบรรทุกเกินพิกัด
Method overloading หรือที่เรียกว่า Function overloading หรือ Compile time polymorphism เป็นแนวคิดของการมีสองวิธีขึ้นไปที่มีชื่อเดียวกัน แต่มีลายเซ็นที่แตกต่างกันในขอบเขตเดียวกัน มีภาษาการเขียนโปรแกรมมากมายที่สนับสนุนคุณสมบัตินี้: Ada, C ++, C #, D และ Java

ตัวอย่างของวิธีการมากไปใน C #

คลาส OverloadShapes {ลอยรูปหลายเหลี่ยม (รัศมี int, pi ลอย) {float circleArea = pi * รัศมี * รัศมี } int รูปหลายเหลี่ยม (ความยาว int ความกว้าง int) {int rectangleArea = ความยาว * ความกว้าง; } int รูปหลายเหลี่ยม (ด้าน int) {int squareArea = ด้าน * ด้าน; }}
1 2 3 4 5 6 7 8 9 10 11 12 13 14คลาส OverloadShapes {ลอยรูปหลายเหลี่ยม (รัศมี int, pi ลอย) {float circleArea = pi * รัศมี * รัศมี } int รูปหลายเหลี่ยม (ความยาว int ความกว้าง int) {int rectangleArea = ความยาว * ความกว้าง; } int รูปหลายเหลี่ยม (ด้าน int) {int squareArea = ด้าน * ด้าน; }}

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

วิธีการเอาชนะ
การแทนที่เมธอดหรือที่รู้จักกันในชื่อ Function Overriding หรือ Run time polymorphism เป็นฟีเจอร์ OOP ที่ช่วยให้คลาสเด็ก ๆ สามารถให้การใช้งานของตนเองกับวิธีที่กำหนดไว้ในคลาสพาเรนต์ การนำไปใช้ในคลาสย่อยจะแทนที่นิยามของเมธอดในคลาสพื้นฐานโดยที่เมธอดในคลาสย่อยควรมีชื่อลายเซ็นและชนิดส่งคืนเดียวกัน

ตัวอย่างของวิธีการเอาชนะใน C #

คลาส Source1 {public void draw () {Console.Writeline ("ฉันอยู่ในคลาส Source1"); }} คลาส Source2 ขยาย Source1 {public void draw () {Console.Writeline ("ฉันอยู่ในคลาส Source2"); }}
1 2 3 4 5 6 7 8 9 10คลาส Source1 {public void draw () {Console Writeline ("ฉันอยู่ในชั้นเรียน Source1"); }} คลาส Source2 ขยาย Source1 {public void draw () {Console Writeline ("ฉันอยู่ในคลาส Source2"); }}

ในที่นี้วิธีการวาดในคลาส Source2 จะแทนที่วิธีการวาดที่กำหนดในคลาส Source1

ความแตกต่างระหว่างวิธีการมากไปและวิธีการเอาชนะ

  1. ในวิธีการมากเกินไปวิธีการต้องมีลายเซ็นที่แตกต่างกัน ในวิธีการวิธีการเอาชนะจะต้องมีลายเซ็นเดียวกัน
  2. ฟังก์ชันโอเวอร์โหลดคือ“ เพิ่ม” หรือ“ ขยาย” มากขึ้นตามพฤติกรรมของวิธีการ การแทนที่ฟังก์ชั่นคือ "เปลี่ยน" หรือ "กำหนด" ลักษณะการทำงานของวิธีการอย่างสมบูรณ์
  3. วิธีการบรรทุกเกินพิกัดจะใช้เพื่อให้เกิดความแตกต่างของเวลารวบรวม; การแทนที่เมธอดถูกใช้เพื่อให้เกิด polymorphism แบบรันไทม์
  4. ในวิธีการ / ฟังก์ชั่นการรวบรวมเกินพิกัดรู้ว่าวัตถุใดที่ได้รับมอบหมายให้เรียนในช่วงเวลาของการรวบรวม แต่ในวิธีการเอาชนะข้อมูลนี้ไม่เป็นที่รู้จักจนถึงรันไทม์
  5. Function Overloading เกิดขึ้นในคลาสเดียวกันในขณะที่ Overriding เกิดขึ้นในคลาสที่ได้มาจากคลาสพื้นฐาน
Top